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成功");
}

	

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值