我用VC写了一个DLL动态库(文件名为MyDll.dll)。2天前可以调用,昨天机器死了一次,再调用有提示说找不到 MyDll.dll。以为是VB有问题就重新安装了VB。可还是没法调用(同样的提示找不到文件)。
重新把系统做了一下,问题还是如旧!!!
我仔细检查了MyDll.dll文件路径(系统目录\SYSTEM32\、当前工程路径下、VB路径下)都没问题。
请高手判断问题出在什么地方。

解决方案 »

  1.   

    "开始"/"运行" 写上regsvr32 myDll.dll
      

  2.   

    如果还不行,直接引用改文件看行不行"工程"/"引用"/"浏览" 选中你的dll文件,看是否能加近来
      

  3.   

    晕,是动态连接库啊。不是COM组件。
    必须用 Public Declare Function MySub Lib "MyDLL.dll" (ByVal HWnd As Long) As Long
    声明才能调用的。
      

  4.   

    重新注册以下:
    在命令行模式下: regsvr32 yourfile..
      

  5.   

    动态库是不能注册的........看清楚再回答。
    其调用同调用API函数是一样的。
      

  6.   

    我估计你是先打开 VB 后加载工程的,当前路径就成了 VB6 所在路径。你直接双击工程文件启动 VB 后试试。
      

  7.   

    友情提示:可能的原因之一:检查MyDll.dll的文件名,看看是不是被改成了MyDll.dll.dll。这种情况下,当你的资源管理器中设置了隐藏已知类型文件的扩展名时这个文件名会显示成MyDll.dll的。
      

  8.   

    新建一VB工程,调用该DLL中的函数,如果可以则可以排除DLL的问题,而是你工程的问题
      

  9.   

    以前能用,说明你调用的方式是对的,你把指定DLL的路径改成 完整的路径指定 试试
      

  10.   

    问一下, 动态连接库 不注册, 是不是只能放在 程序同目录 和 system32目录里, 才可以使用.
    但好像也得注册一下....VB6的运行库 好像 在没装VB的机器 直接拷贝到 程序目录 里 VB程序就可以用了 也没注册...
    那 什么样的DLL要注册啊...... 有些也要注册的
    什么样的不要注册... 怎么区分啊
    dll 文件不用注册吗?
     小弟很菜, 求教 指点一下....................--------------------------------------------
    晕,是动态连接库啊。不是COM组件。
    必须用 Public Declare Function MySub Lib "MyDLL.dll" (ByVal HWnd As Long) As Long
    声明才能调用的。
    动态库是不能注册的........看清楚再回答。
    其调用同调用API函数是一样的。
      

  11.   

    有可能mydll.dll找不到库了。visual sudio 有个工具depends可以帮你查看mydll.dll是否找不到引用库了。
      

  12.   

    奇怪的事情我建议你 把mydll.dll重新编译一次还有建议 mydll.dll不要到处乱丢  不然版本混乱 自己都搞不清楚程序掉到哪个dll
    放在一个可以掉到的地方即可 每次生机的时候覆盖掉
      

  13.   

    服了,n年没来看看这些问题和答复还是一样的...未必是找不到你的 mydll.dll,而可能是找不到 mydll.dll 依赖的某个文件,所以无法加载动态连接库。用 Depends 看看依赖性——能看出某个文件 missing 就对了
      

  14.   

    //那 什么样的DLL要注册啊...... 有些也要注册的
    //什么样的不要注册... 怎么区分啊
    要注册的DLL其实是COM组件,只不过后缀也是DLL,而这个DLL也真的有四个函数可以用,这四个函数就如果OCX一样,是完成注册及解除注册等功能,搂主把这类DLL看作OCX对待就好了,事实上,ActiveX控件也是DLL的一个应用。
    而不需要注册的Dll则是动态链接库文件。
      

  15.   

    回复人: hwshws123(hws) ( ) 信誉:100 
    晕,是动态连接库啊。不是COM组件。
    必须用 Public Declare Function MySub Lib "MyDLL.dll" (ByVal HWnd As Long) As Long
    声明才能调用的。同意。
      

  16.   

    piggybank(吞硬币的小猪)说的最有可能
      

  17.   

    问题终于解决了,是没有MFC42.dll文件。我真是服了各位了。