Windows用LoadLibrary+GetProcAddress,Linux用dlopen+dlsym实现运行时动态加载;需注意函数导出(__declspec(dllexport)/__attribute__((visibility("default"))))、类型安全调用、跨平台封装、路径与符号可见性、内存管理边界等关键点。

Windows 下用 LoadLibrary + GetProcAddress,Linux 下用 dlopen + dlsym。核心是运行时加载、获取函数地址、类型安全调用。
Windows:用 LoadLibrary 加载 DLL
需要头文件 #include windows.h>,DLL 导出函数需用 __declspec(dllexport)(编译 DLL 时),调用方用 typedef 声明函数指针类型,再通过 GetProcAddress 获取地址。
示例(调用一个 int add(int, int) 函数):
- 先定义函数指针类型:typedef int (*AddFunc)(int, int);
- 加载 DLL:HMODULE hDll = LoadLibrary(L"mylib.dll");
- 获取函数地址:AddFunc add = (AddFunc)GetProcAddress(hDll, "add");
- 检查并调用:if (add) { int r = add(3, 5); }
- 用完释放:FreeLibrary(hDll);
Linux:用 dlopen 加载 SO
需链接 -ldl,头文件 #include
立即学习“C++免费学习笔记(深入)”;
标签: linux windows cad c++ win typedef lsp
还木有评论哦,快来抢沙发吧~