loadlibrary()失败的问题?

wydr_061111036 2011-06-10 11:20:15

问题如下,请各位大虾帮忙看看,是什么问题导致的,谢谢!

我们公司产品更新,需要替换一些DLL文件,可是我在原来的工程里面调用loadlibrary()导入这些DLL文件时失败。而我自己重新写一个.EXE文件调用LOADLIBRARY()来导入这些DLL文件有成功。

不知道怎么回事请各位大虾帮忙看看,跪求答案啊!

谢谢啊!
...全文
541 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaomingok 2011-06-14
  • 打赏
  • 举报
回复
一般情况下如果是使用debug模式,dll文件需要放在工程文件所在目录

设置当前工作目录使用SetCurrentDirectory(),具体用法可以google
wydr_061111036 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 gaomingok 的回复:]
主程序和DLL不在一个目录中?
如果是这样,在loadlibrary()前就需要设置当前工作目录为DLL目录
[/Quote]主程序和DLL在同一个目录中,第二点没明白,能写个代码段给个例子不咯,谢谢!
gaomingok 2011-06-11
  • 打赏
  • 举报
回复
主程序和DLL不在一个目录中?
如果是这样,在loadlibrary()前就需要设置当前工作目录为DLL目录
c_losed 2011-06-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wydr_061111036 的回复:]

引用 1 楼 bdmh 的回复:
getlasterror看看失败原因,是不是路径问题
用GetLastError()查错代码是“127”表示没有找到指定的程序。可是我以前的也是这样直接导入的啊,并且成功。这次只是简单的覆盖替换而已。路径的话应该也没有错。很费解。
[/Quote]
写绝对路径测试下
wydr_061111036 2011-06-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kevin_perkins 的回复:]
用LoadLibraryEx试试看.
[/Quote]恩 下午,试试!唉!着急啊!
wydr_061111036 2011-06-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
getlasterror看看失败原因,是不是路径问题
[/Quote]用GetLastError()查错代码是“127”表示没有找到指定的程序。可是我以前的也是这样直接导入的啊,并且成功。这次只是简单的覆盖替换而已。路径的话应该也没有错。很费解。
Kevin_Perkins 2011-06-10
  • 打赏
  • 举报
回复
用LoadLibraryEx试试看.
bdmh 2011-06-10
  • 打赏
  • 举报
回复
getlasterror看看失败原因,是不是路径问题
wydr_061111036 2011-06-10
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zj510 的回复:]
其实你可以debug一下,LoadLibrary()会调用DLL的dllmain()函数,你可以跟你的DLL的dllmain函数,如果dllmian()返回FALSE的话,Loadlibrary就失败了。
[/Quote]这个还真么弄明白你的意思,貌似我跟不进去。能给段代码看看么,谢谢!
JaneThink 2011-06-10
  • 打赏
  • 举报
回复
关注,加学习
zj510 2011-06-10
  • 打赏
  • 举报
回复
其实你可以debug一下,LoadLibrary()会调用DLL的dllmain()函数,你可以跟你的DLL的dllmain函数,如果dllmian()返回FALSE的话,Loadlibrary就失败了。
wydr_061111036 2011-06-10
  • 打赏
  • 举报
回复
谢谢各位的答案,该问题已经解决啦,我把这个loadlibrary()加载dll的过程放到InitInstance的最前端就能够成功啦,具体的原因还在分析过剩中,之后我会把错误的原因在发布一下啊,再次感谢各位珍贵的意见。谢谢!!
wydr_061111036 2011-06-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 luciferisnotsatan 的回复:]
ERROR_PROC_NOT_FOUND
127 The specified procedure could not be found.

用depends看看,那dll依赖的库是否都能找到
[/Quote]所有依赖项都已经满足。我也是用的DEPENDS查看的。谢谢!
na2650945 2011-06-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 luciferisnotsatan 的回复:]

ERROR_PROC_NOT_FOUND
127 The specified procedure could not be found.

用depends看看,那dll依赖的库是否都能找到
[/Quote]
这个是正解。
看看吧。
sdlsa10000 2011-06-10
  • 打赏
  • 举报
回复
八成是因为dll依赖的dll没有找到。前天刚遇到这样的问题,把dll copy过去就ok啦
luciferisnotsatan 2011-06-10
  • 打赏
  • 举报
回复
ERROR_PROC_NOT_FOUND
127 The specified procedure could not be found.

用depends看看,那dll依赖的库是否都能找到
ouyh12345 2011-06-10
  • 打赏
  • 举报
回复
依赖是否满足?
wydr_061111036 2011-06-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wydr_061111036 的回复:]
引用 2 楼 kevin_perkins 的回复:
用LoadLibraryEx试试看.
恩 下午,试试!唉!着急啊!
[/Quote]写了绝对路径也是错误的,因为这个DLL文件还有依赖项。我把他们都放在一起。同一个能够定位到的目录下。

65,019

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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