这是我调试时写的代码:
*****************************************
Private ClsHZK As New HZK.Class_noerngPrivate Sub Command1_Click()
    If ClsHZK.open = "1" Then
        Call MsgBox("OK", vbOKOnly, "OK")
    End If
End Sub
*****************************************
1、该DLL是Power Builder写的,详细代码没有
2、该DLL无法用regedt32注册,说“指定文件不是注册脚本”,用的是DLL附带的reg文件注册的
3、我在工程中引用了这个HZK.DLL,可以在对象浏览器中查到DLL里的方法
4、编译成功,但当运行到   If ClsHZK.open = "1" Then   是就说
实时错误'-2147024770 (8007007e)':
自动化错误
后来我又先后用了其他写法如Private Declare Function open Lib "hyjk.dll" () As String     会说找不到文件Set oa = CreateObject("HZK.Class_noerng")   会说“AtciveX 部件不能创建对象”我自己用VB写的DLL引用就没问题,用这个就不行,已经想不出还有什么其他方法,求教一下大家了~~~~~

解决方案 »

  1.   

    没有安装PB的东西,应该不用吧,拿个DLL还要安装这些。我用VB写的DLL可不用装VB啊~~~~~~~
      

  2.   

    XP 自动安装了 VB 的运行库。类似的:用 Oracle 必须安装客户端,用 Sql Server 就不需要。
      

  3.   

    如需要,我可以把该DLL和相关文件发给各位~
      

  4.   

    将DLL放到程序的目录下并且就注册到程序目录下
    然后你这个语句就能运行通过了
      

  5.   

    可以运行了。一开始我把DLL放在C盘并注册,而我的代码是在E盘的,后来发现运行不了时也有想过在代码的目录内也放一个DLL,但还是不行。刚我直接把代码复制到C盘DLL的目录就可以了,看来确实只认注册的那个,而且必须在同目录下。结贴了,感谢Tiger_Zhao的关注,分部分点数出来希望hua321154别介意~~~~~~
      

  6.   

    这是搜索外部 dll 的路径问题,见这个帖子
      

  7.   

    因为 hyjk.dll 本身需要使用其他 dll,所以不能简单地复制到 exe 所在目录。
      

  8.   

    我也遇到一个类似的问题:
    dll1是c++写的,cdecl调用约定,该dll使用到其他2个dll2\dll3,使用VB.NET 新建项目,把3个dll全部复制到项目目录下,无法调用,将编译后的exe放到该dll1、2、3 原始目录下,运行正常这样有个问题,我怎么把这个程序分发?