Dynami c загрузка DLL в C ++ для Linux платформы - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь создать проект Linux C ++, используя тот же заголовок и файлы .cpp из проекта Windows C ++, используя Visual Studio. Я использую функцию ниже для динамической загрузки DLL в Windows

HINSTANCE hGetProcIDDLL = LoadLibraryA(sDllPath.c_str());
GetPluginInfoList GetInfoList = (GetPluginInfoList)GetProcAddress(hGetProcIDDLL, "GetPluginInfoList");

Я думаю, что эти функции происходят из <windows.h>

Когда дело доходит до проекта Linux C ++, я не являюсь получать эти функциональные возможности. Для Linux C ++ какая замена для HINSTANCE и LoadLibraryA?

1 Ответ

2 голосов
/ 28 января 2020

Я публикую свой ответ здесь. Спасибо всем за поддержку

typedef CPluginInfoList(*GetPluginInfoList)(void);



#if _WINDLL
    HINSTANCE hGetProcIDDLL = LoadLibraryA(sDllPath.c_str());

#else
    void* hGetProcIDDLL = dlopen(sDllPath.c_str(), RTLD_LAZY);

#endif


#if _WINDLL
    GetPluginInfoList GetInfoList = (GetPluginInfoList)GetProcAddress(hGetProcIDDLL, "GetPluginInfoList");
#else
    GetPluginInfoList GetInfoList = (GetPluginInfoList)dlsym(hGetProcIDDLL, "GetPluginInfoList");
#endif


GetInfoList(); //Function Call
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...