windows及linux下加载动态库方法
Windows 下加载.dll动态库
-
使用方法
#ifdef UNICODE #define LoadLibraryEx LoadLibraryExW #else #define LoadLibraryEx LoadLibraryExA #endif // !UNICODE //可以看到,根据编码的格式的不同,调用的方法也不同 非unicode 为 LoadLibraryExA //下面是使用 //pszfile : .dll文件路径 // LOAD_WITH_ALTERED_SEARCH_PATH : 如果使用此值,则在应用程序的安装目录中搜索DLL及其依赖项。不搜索标准搜索路径中的目录。该值不能与LOAD_WITH_ALTERED_SEARCH_PATH结合使用 。 HMODULE handle=LoadLibraryEx(pszfile,NULL,LOAD_WITH_ALTERED_SEARCH_PATH); //handle : 打开的句柄 //name : 函数名 //fnc : 获取的函数指针 void *fnc=GetProcAddress(handle,name); //释放句柄 FreeLibrary(handle);
-
LoadLibraryExA 函数原型 微软API链接
HMODULE LoadLibraryExA( LPCSTR lpLibFileName, HANDLE hFile, DWORD dwFlags );
Linux 下加载.so动态库
-
使用方法
//头文件 : #include <dlfcn.h> //pszfile : 路径 //handle : 句柄 void *handle = dlopen(pszfile, RTLD_NOW); //handle : 句柄 //fnc :函数指针 //name : 函数名 void *fnc = dlsym(handle,name); //释放句柄 dlclose(handle);