LoadLibrary失败,返回找不到指定模块

thinp 2006-05-26 04:22:27
我在一个程序中LoadLibrary("c:\\test\\a.dll");其中a.dll链接了一个b.dll,而且b.dll也在test目录下,失败,如果把b.dll放在test.exe目录下,test.exe在C:\下,调用就成功,XP SP2系统,VS2005开发,如果调用SetCurrentDirectory("c:\\test\\")就可以调用成功,我的机器新装,不成功,重装前成功,请问问题出在什么地方,或者是什么地方需要设置一下
...全文
6012 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lixiaosan 2006-05-26
  • 打赏
  • 举报
回复
那在windows的环境变量的path中加上dll的路径

系统属性-》环境变量。。


thinp 2006-05-26
  • 打赏
  • 举报
回复
没有,所有环境变量均是一样的,我特意对比过
sinsou 2006-05-26
  • 打赏
  • 举报
回复
是不是你其他的机器设置了环境变量或者环境变量中的目录正好有b.dll所在的目录
thinp 2006-05-26
  • 打赏
  • 举报
回复
我再把问题描述一次吧
我用VS2005写了一个测试程序:test.exe
test.exe用LoadLibrary加载了一个a.dll
a.dll静态连接了一个b.dll
其中:test.exe位于c:\下,a.dll和b.dll位于c:\test目录下,程序是这样写的
HMODULE hDll = LoadLibrary(_T("c:\\test\\a.dll"));

在有的机器上能调用成功,在有的机器上不成功,我新装的XP SP2,不成功
我也怀疑sinsou(阿良·有谁共鸣) 所说的情况,但是有的机器就能成功,为什么?
而且此程序在我重装机器前运行良好,重装了之后就不行了.当然,我希望它成功,有什么方法可以让它成功,是不是windows有什么地方设置一下就可以了
sinsou 2006-05-26
  • 打赏
  • 举报
回复
当然不成功了,windows定位dll有几个步骤:
1.exe文件目录
2.进程当前工作目录
3.windows系统目录
4.windows目录
5.设置的环境变量的目录
现在你的b.dll运行需要运行在当前进程里面,而如果c:\\test并不是上述5种情况之一,dll载入肯定失败
bobob 2006-05-26
  • 打赏
  • 举报
回复
楼主的表达让我看的云里雾里
jacklzw88 2006-05-26
  • 打赏
  • 举报
回复
如果是unicode问题我想也不会出现能调用成功的问题了
jacklzw88 2006-05-26
  • 打赏
  • 举报
回复
这种问题很简单,不过也不太懂你说的意思,但是一般肯定是当前路径设置错误了
lixiaosan 2006-05-26
  • 打赏
  • 举报
回复
vs2005 默认使用unicode

try

LoadLibrary(_T("c:\\test\\a.dll"));

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧