首页 » 技术分享 » LoadLibrary加载动态库失败的解决办法

LoadLibrary加载动态库失败的解决办法

 

方式一:LoadLibraryEx

转载:http://blog.sina.com.cn/s/blog_62ad1b8101017qub.html

若DLL不在调用方的同一目录下,可以用LoadLibrary(L"DLL绝对路径")加载。但若调用的DLL内部又调用另外一个DLL,此时调用仍会失败。解决办法是用 LoadLibraryEx,通过指定 LOAD_WITH_ALTERED_SEARCH_PATH,让系统DLL搜索顺序从DLL所在目录开始。

LoadLibraryEx("DLL绝对路径", NULL, LOAD_WITH_ALTERED_SEARCH_PATH);

 

方式二:SetCurrentDir

转载:http://blog.csdn.net/flyayi2006/article/details/5526982

跨目录调用dll,你应该这样:
1、用 GetCurrentDir 保存当前的工作目录
2、用 SetCurrentDir 将当前的工作目录,设置为你的DLL所在的路径,需要使用绝对路径
3、用 LoadLibrary 你的DLL
4、使用 SetCurrentDir 恢复到原来的工作路径

char szCurDir[MAX_PATH] = { 0 };
GetCurrentDirectory(MAX_PATH, szCurDir);
SetCurrentDirectory(strDllDir.c_str());

HINSTANCE hInstance = LoadLibraryEx(strDllPath.c_str(), NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
SetCurrentDirectory(szCurDir);
if (hInstance == NULL)
{
    MessageBox("加载DLL失败");
}
else
{
    MessageBox("加载DLL成功");
}

	

 

转载自原文链接, 如需删除请联系管理员。

原文链接:LoadLibrary加载动态库失败的解决办法,转载请注明来源!

0