LoadLibrary失败,何故?

sdcer 2006-04-24 11:38:55
在我的程序中,调用我写的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这种形式),就可以正常加载。但是这没有道理啊。
...全文
194 4 点赞 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sdcer 2006-06-01
以上说的都不对,原因是这样的:
是其它路径下的.cpp文件的文件名必须比当前路径下的文件名大(即strcmp()>0),
呵呵,很奇怪的问题。
  • 打赏
  • 举报
回复
lyl_rabbit 2006-04-24
只把DLL文件放到当前目录下就可以了
  • 打赏
  • 举报
回复
Kudeet 2006-04-24
LoadLibrary写入绝对路径测试一下不就可以排除是不是路径问题了
  • 打赏
  • 举报
回复
贵子潘 2006-04-24
还有注意一下你的DLL和测试程序是不是是同一版本,如DEBUG
  • 打赏
  • 举报
回复
相关推荐
发帖
VC/MFC
加入

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2006-04-24 11:38
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……