首页
社区
课程
招聘
[求助]在VC里面,为什么不能够loadlibrary运行库函数?
发表于: 2009-9-15 23:55 8937

[求助]在VC里面,为什么不能够loadlibrary运行库函数?

2009-9-15 23:55
8937
如:
LoadLibrary("msvcp80.dll")

为什么总是返回0。为什么不能像调用其他DLL一样这样导入呢?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
为什么不GetLastError一下呢?
2009-9-16 06:43
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
GetLastError 126
2009-9-16 08:53
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
……给我看有什么用啊?你要自己去看这个错误码什么意思,然后分析可能的原因,学编程咋能这样啊
2009-9-16 09:36
0
雪    币: 227
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
126   找不到指定的模块   
可能该dll还要依赖其他dll,而你电脑上没有
2009-9-16 09:36
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我晕……既然我知道这个错误代码肯定分析过,正因为不知道是什么原因才发帖问的。

如果你没有试过,那么请不要否认我的学习态度!
2009-9-16 09:39
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我试过了,这个和依赖性没有关系……全都是一些通用的库。环境里全都有
2009-9-16 09:41
0
雪    币: 437
活跃值: (273)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
8
先百度 关键字 : loadlibrary  返回0  126
因为这个动态库调用的另一个动态库没有在当前目录下

该动态链接库采用了静态的方式调用了另一个链接库(B),而另一个链接库则又采用静态的方式调用了另一个动态链接库(C),但是 C 却没有拷贝到程序所在目录,所以导致不能正常加载

得到信息后 看下msvcp80依赖的DLL 如下
KERNEL32.DLL
MSVCP80.DLL
MSVCR80.DLL
MSVCRT.DLL
NTDLL.DLL
然后你把这些DLL拷贝到你的工程目录下应该就可以了  猜测的 你试下= =  如果还不行 看下这些依赖的DLL还依赖啥DLL, 都拷贝到工程目录下。。。。。。
2009-9-16 09:48
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
刚刚又试了一遍确认了一下,还是老样子……
我在想是不是运行时库的函数不能够这样调用
2009-9-16 10:21
0
雪    币: 2559
活跃值: (176)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
遇到这种问题,最好的办法就是把那个dll的绝对路径写上,看看能不能调用,例如:
LoadLibrary("c:\\windows\\system32\\msvcp80.dll");如果这样还是错,那就是msvcp80.dll本身格式有问题或者不存在了。
2009-9-16 12:42
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
11
LoadLibrary("msvcp80");
试试这样写
不过,Load这个dll有什么用??
2009-9-16 12:49
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我测试过,这个和路径、依赖都没有关系。有人说
This is because MSVCP80.dll is forbidden to be loaded by LoadLibrary and Windows mandates that applications must use manifests to load it. And no apparent way how to use manifest to load the dll "by hand".
可如果是VC6调用或者其他语言调用再或者在Linux平台小调用这个DLL文件怎么办呢?
2009-9-16 13:59
0
雪    币: 952
活跃值: (1931)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
manifest 问题  msvcp80里面有检查
2009-9-16 14:50
0
雪    币: 251
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
或许可以patch掉_check_manifest(hDllHandle)
2009-9-16 16:23
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
嗯,晓得了……看来想调用8.0以上的运行时库不是很容易啊
2009-9-16 16:52
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
JDF
16
应该是缺少必要的依赖dll,dll的依赖是树形的关系,A依赖B,B依赖C,C依赖D,这环节上缺少任何一个都会Load失败,楼主仔细检查一下吧
2009-9-19 14:52
0
游客
登录 | 注册 方可回帖
返回
//