博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DLL中加载其它DLL使用LoadLibrary加载动态库失败的解决办法
阅读量:6902 次
发布时间:2019-06-27

本文共 629 字,大约阅读时间需要 2 分钟。

hot3.png

方式一 采用LoadLibraryEx

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

方式二 采用SetCurrentDir

跨目录调用dll,你应该这样
1 用GetCurrentDir保存当前的工作目录
2 用SetCurrentDir将当前的工作目录,设置为你的DLL所在的路径,需要使用绝对路径
3 用LoadLibrary你的DLL
4 使用SetCurrentDir恢复到原来的工作路径
eg:
TCHAR chCurDir[MAX_PATH] = {0};
GetCurrentDirectory(MAX_PATH, chCurDir);
SetCurrentDirectory(_T("c:\\test\\"));
m_hDLL = LoadLibrary(_T("demo.dll"));
SetCurrentDirectory(chCurDir);

转载于:https://my.oschina.net/u/1016305/blog/480914

你可能感兴趣的文章
[xilinx sdk] Error while handling inferior event:
查看>>
Druid——阿里巴巴的开源项目(关于数据库连接、监控)
查看>>
(转载)互联网协议入门(一)
查看>>
idea中配置tomcat
查看>>
抽象类 VS 接口(2)
查看>>
红黑树的一个java实现
查看>>
【05-02】java spi
查看>>
P3187 [HNOI2007]最小矩形覆盖
查看>>
AtcoderExaWizards 2019题解
查看>>
Manacher算法学习笔记
查看>>
Alpha冲刺&总结报告(12/12)(麻瓜制造者)
查看>>
抓取网页链接,并保存到本地
查看>>
017_异步处理_Queueable
查看>>
LeakCanary上传 leak trace 到服务器
查看>>
Java并发编程(十二)Callable、Future和FutureTask
查看>>
android.support不统一的问题
查看>>
margin与padding
查看>>
注解式开发spring定时器
查看>>
LeetCode - 35. Search Insert Position
查看>>
平衡二叉树(AVL树)
查看>>