首页 > 解决方案 > 在 C++ 中为 Linux 平台动态加载 DLL

问题描述

我正在尝试.cpp使用 Visual Studio 的 Windows C++ 项目中的相同头文件和文件创建一个 Linux C++ 项目。我正在使用以下函数在 Windows 中动态加载 DLL

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

我认为这些功能来自<windows.h>

当涉及到 Linux C++ 项目时,我没有获得这些功能。HINSTANCE对于 Linux C++,和的替代品是LoadLibraryA什么?

标签: c++linux

解决方案


我在这里发布我的答案。感谢大家的支持

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

推荐阅读