c++ - 在 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
什么?
解决方案
我在这里发布我的答案。感谢大家的支持
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
推荐阅读
- selenium - 通过 Python 代码子进程打开 Jupyter Notebook
- python - 使用 python sdk 创建一个 auth ConfigMap
- java - 将二进制 1 和 0 的整数(或字符串)数组转换为它们在 Java 中的 alpha 等效项
- c# - 来自 webapi 的响应,字节数组为 null
- python - UnsatisfiableError: pyqt 和 py-opencv 冲突
- python - 带有模式命令的 Python tox deps
- python - df.groupby() 的一些操作
- python - 无法在pygame中移动对象
- android - 使用跨越多个单元格的元素构建二维(回收站)视图
- scala - 为什么不能在 DataFrame 操作中保留“向量”类型的列