Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2011, 20:57   #1
Demitreus
Новичок
Джуниор
 
Регистрация: 12.09.2011
Сообщений: 1
По умолчанию Написание плагина на С++ для Делфи-приложения

Хочу на BCB 2007 сделать плагин для "All My Movies", которая сделана на Делфи и список API функций, соответственно объявлен на паскале.

Создаю dll проект в BCB 2007, пишу простой примерчик вызова формы - работает. Но вот дальше разработка плагина застопорилась.

Мой код плагина (оставил только необходимую часть для демонстрации)


Код:
#define DLL_SPEC __declspec(dllexport)

extern "C"
{
   //Это необходимый список импортируемых функций через которые происходит взаимодействие с плагином
   int DLL_SPEC __stdcall GetVersion4();
   char* DLL_SPEC __stdcall GetName4();
   void DLL_SPEC __stdcall AMM_PluginStart4();
   void DLL_SPEC __stdcall Init4(int Owner);
}

typedef int __stdcall (*iGetPChar)(char * &s);

int OwnerApp;

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
    //OwnerApp = 0;
    return 1;
}

void __stdcall Init4(int Owner)
{
    //OwnerApp = 3;
    OwnerApp = Owner;
}

void __stdcall AMM_PluginStart4()
{
    TFirstForm *frm = new TFirstForm(Application);
    frm->ShowModal();
    delete frm;
}

__fastcall TFirstForm::TFirstForm(TComponent* Owner)
{
    char *s = new char[500];
    iGetPChar fun = (iGetPChar)GetProcAddress((HMODULE)OwnerApp, "GetLocalPath");
    int i=0;
    if(fun){
        i = fun(s);
    }
    delete[] s;
}

При вызове Init4 в плагин должен передоваться хандел Owner, с помощью которого я могу обращаться к процессу приложения. Так вот, похоже, что Owner не передаётся или передаётся с ошибкой. Какието проблеммы с передачей параметров, Думал, может не __stdcall, а __cdecl или __fastcall? Уже перепробывал все эти типы вызовов - результат один - указатель "fun" равен нулю! Что может быть?

Последний раз редактировалось Demitreus; 12.09.2011 в 22:21.
Demitreus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написание консольного приложения на подобие MS Telnet monushka Visual C++ 4 14.08.2011 01:10
Глупый question по поводу плагина для браузера Aquasonick PHP 1 01.05.2011 19:19
Аналог wp-плагина theme switcher только для Drupal Alexei91 WordPress и другие CMS 0 29.04.2011 13:06
Написание прог в Делфи ilgar-90 Свободное общение 5 28.01.2010 15:23