我用VB调用了某个DLL,在调试的时候老是说文件未找到,可dll明明就在当前文件夹里面啊,请问这是怎么回事?
还有放到别的机器上就没有问题,如果把文件编译一下运行也没有问题

解决方案 »

  1.   

    需要注册 建议你去百度 regsvr32
      

  2.   

    把要调用的DLL放在程序目录下,或者直接用FILECOPY到WINDOWS目录下,两种方法都可以解决楼主的问题。
      

  3.   

    请先注册,再引用。
    注册使用:RegSvr32 xxx.dll
      

  4.   

    同意楼上,注册之后还要引用。引用的方法是工程-》引用,通过浏览找到你要引用的DLL即可。
      

  5.   

    拷贝DLL到SYSTEM32目录,或者编译成EXE,因为运行时程序的工作目录是VB的目录
      

  6.   

    1.进入注册表。搜索你的dll的文件名。将搜到的全删掉。(或者regsvr32 /u mydll.dll)
      注册你要用的dll。
    2.打开vb工程。取消引用你的dll。
      保存工程。关闭。然后重新打开。再添加引用。出现你这种情况一般都是dll注册多次。然后引用的是前一次注册的路径。但是那个路径已经不存在dll文件。
    建议做工程的时候把dll都放在一个目录下。这样会少很多莫名其妙的问题。
    try it!
    good luck!
      

  7.   

    楼主遇到的是不是兼容性问题?调用的dll文件是系统dll还是别的应用程序api,还是自己写的dll?你说如果把文件编译一下运行也没有问题,是编译没有问题,还是编译后调用没有问题?建议重新build调用dll的主程序下次修改dll时使用工程兼容,或者二进制兼容。。
      

  8.   


    楼上全都是瞎猜。实际上,就是因为你是通过 VB 启动了工程,所以当前路径变成了 VB 所在路径。直接双击工程启动,或者把你的 DLL 放到 VB 目录。当然,放到 Win/System32 也是可以的。被调用文件有一个缺省的搜索顺序,系统目录也在搜索范围。
      

  9.   

    这个DLL是别的公司做的,我一次也没有注册过,直接复制到程序所在的目录的,不过后来注册了也没用
      

  10.   

    我有这么几个猜想,
    1,你的系统里有多个重名的.dll。
    2,你拿到的这个dll本身就有问题建议,用记事本把你的工程文件.VBP打开,找到你的那个.dll文件的注册表项,然后到注册表里搜,搜不到的话说明你没有注册这个Dll。如果搜到了,但是显示的路径不对,还是说明你注册错了。都没问题的话,说明你的DLL接口有问题。
      

  11.   

    http://topic.csdn.net/u/20090309/16/2f607d2a-5dba-44d7-a333-188b73415533.html
      

  12.   

    没有注册的原因。你可以把DLL 拷贝到  C:\WINDOWS\system32下。