Как вызывать функции из чужой DLL?

У меня имеется чужая dll-ка. И есть пример на VB6.0 использования этой dll. dll- не COM-сервер.
Мне в итоге нужно используя jni вызывать эту dll из java.
Но как вызвать эту dll из c++, что бы написать jni-обертку?
  • Вопрос задан
  • 614 просмотров
Решения вопроса 1
EvgenijDv
@EvgenijDv
C/C++ programmer
Загружаете DLL, находите нужные вам функции и вызываете их :-)
Очень схематично как-то так:

// указатель на функцию, которая принимает параметр char* и возвращает int
typedef int  (__cdecl *_your_function)(char *auth_st);
_your_function YourFunction;

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    HINSTANCE hLib = LoadLibrary("Path_to_DLL");
    YourFunction = (_your_function)GetProcAddress((HMODULE)hLib, "Your_Function_name");
    if(YourFunction  == NULL) {
        //something wrong
    }
    int res = YourFunction ("some string");
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@superbadlam Автор вопроса
Единственное, что в моем случае в объявлении
typedef int  (__cdecl *_your_function)(char *auth_st);

заменил __cdecl* на __stdcall*

и все заработало.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы