LoadLibrary失败,何故?

sdcer sdcer 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在我的程序中,调用我写的MyDll.dll,代码如下:

hMoudle = LoadLibrary("MyDll.dll");
if (hMoudle == NULL)
DWORD dwErr = GetLastError();

发现hMoudle返回NULL(说明加载dll失败),但GetLastError()返回的是0(说明没有错误),这是什么原因?dll放在exe当前目录下,应该不是路径的问题。

后来,我又在MyDll.dll工程中,以调试的方式运行(在dll源程序中设置断点,以调试的方式运行,在dll工程中设置运行的exe),发现:程序根本没有进入MyDll.dll中的DllMain(), 也就是说,连dll的入口都没进入。

我想,我的dll工程中中设置了一些相对路径,在编译选项中以:"..\..Else"形式写入相对路径,也就是说这个dll用到了工程目录的上一层的上一层的else文件夹中的.h文件以及lib,我想是不是和这个有关?但我用depends工具查看,发现mydll.dll没有缺少其它的库文件,请各位指教。

此外,如果把所有的.h和.lib所在文件夹全放入工程目录下(不使用..\..else这种形式),就可以正常加载。但是这没有道理啊。
...全文
评论 4
收藏 已收藏
分享
返回顶部
sdcer
VC/MFC 16,550 成员 421,606 内容