一个VB调用DLL的程序,在VB集成环境下运行正常,但把程序编译成.exe文件在windows环境下运行却提示"运行时错误 53 , xxx.DLL文件未找到",但该DLL文件确实和程序在同一个目录.这究竟是为什么?请高手指点一下,谢谢!

解决方案 »

  1.   

    如果是VB的编译的dll,需要注册...
      

  2.   

    但该DLL文件确实和程序在同一个目录.这究竟是为什么?需要用system32/regsvr32.exe打开DLL文件进行注册
      

  3.   

    VB编译的DLL,在编译时会自动注册。
    1、如果你是通过引用调用,应该不会有问题;
    2、如果你是通过声明来调用,应该将这个DLL拷贝到c:\windows\system32下的默认目录下,在调用时会自动找到该DLL文件;
    3、如果是其他COM组件,则需要事先注册(不管在哪个目录下)。
      

  4.   

    将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
      

  5.   

    声明时加上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 
      

  6.   

    问题已解决!原来在此DLL文件中调用了另一个DLL文件,将这两个DLL都放到system32中,解决但是如何让DLL和程序在同一目录下正常运行呢? 用绝对路径好象不太合适,如何声明才能让程序在当前目录下寻找
      

  7.   

    要怎么注册呀, 我把他放在SYSTEM32下了为什么还是不行
      

  8.   

    请将该Dll文件放到Windows\System32\  目录下再在运行中运行这个命令: RegSvr32 你的DLL名称(注意,需要后缀名) 回车