vb 调用 DLL 的问题 (运行时错误 53)

sxczren 2009-03-08 11:27:42
一个VB调用DLL的程序,在VB集成环境下运行正常,但把程序编译成.exe文件在windows环境下运行却提示"运行时错误 53 , xxx.DLL文件未找到",但该DLL文件确实和程序在同一个目录.这究竟是为什么?请高手指点一下,谢谢!
...全文
943 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
咸清 2009-06-06
  • 打赏
  • 举报
回复
做完后打个包好了,好像可以解决。就是有点麻烦^_^!
贝隆 2009-06-06
  • 打赏
  • 举报
回复
请将该Dll文件放到Windows\System32\ 目录下

再在运行中运行这个命令: RegSvr32 你的DLL名称(注意,需要后缀名) 回车
could1234 2009-06-06
  • 打赏
  • 举报
回复
要怎么注册呀, 我把他放在SYSTEM32下了为什么还是不行
东方之珠 2009-03-08
  • 打赏
  • 举报
回复
声明时加上DLL路径:
Public Declare Function NET_DVR_Init Lib "d:\SSS\HCNetSDK.dll" () As Long
Public Declare Function NET_DVR_Cleanup Lib "d:\sss\HCNetSDK.dll" () As Boolean
sxczren 2009-03-08
  • 打赏
  • 举报
回复
将dll文件拷贝到system32也不行,并且用regsvr32注册时提示loadlibrary("HCNetSDK.dll")失败-找不到该文件

该DLL文件应该是C++写的,和程序在同一目录,集成环境下调试正常,下面是我的声明方式:

Public Declare Function NET_DVR_Init Lib "HCNetSDK.dll" () As Long
Public Declare Function NET_DVR_Cleanup Lib "HCNetSDK.dll" () As Boolean
东方之珠 2009-03-08
  • 打赏
  • 举报
回复
VB编译的DLL,在编译时会自动注册。
1、如果你是通过引用调用,应该不会有问题;
2、如果你是通过声明来调用,应该将这个DLL拷贝到c:\windows\system32下的默认目录下,在调用时会自动找到该DLL文件;
3、如果是其他COM组件,则需要事先注册(不管在哪个目录下)。
神马都能聊 2009-03-08
  • 打赏
  • 举报
回复
但该DLL文件确实和程序在同一个目录.这究竟是为什么?

需要用system32/regsvr32.exe打开DLL文件进行注册
vbman2003 2009-03-08
  • 打赏
  • 举报
回复
如果是VB的编译的dll,需要注册...
sxczren 2009-03-08
  • 打赏
  • 举报
回复
问题已解决!

原来在此DLL文件中调用了另一个DLL文件,将这两个DLL都放到system32中,解决

但是如何让DLL和程序在同一目录下正常运行呢? 用绝对路径好象不太合适,如何声明才能让程序在当前目录下寻找

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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