使用方法
#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
);
使用方法
//头文件 : #include <dlfcn.h>
//pszfile : 路径
//handle : 句柄
void *handle = dlopen(pszfile, RTLD_NOW);
//handle : 句柄
//fnc :函数指针
//name : 函数名
void *fnc = dlsym(handle,name);
//释放句柄
dlclose(handle);
原文:https://www.cnblogs.com/beweirdo/p/14760777.html