运行时错误 '-2147024714 (800700b6)'
Automation 错误我在PB中写了一个调用一卡通的DLL,这个DLL再调用初始的DLL,然后用VB来访问这个PB写的DLL,调用里面的函数时就提示上面的错误,有解决的办法吗?问题出在哪?大家帮帮忙,我VB主要不太了解.

解决方案 »

  1.   

    首先,要注意DLL中的函数和VB中的函数声明在名称、返回类型、参数类型、参数个数等方面必须完全相同,尤其要注意大小写的问题。
      其次,在DLL的.def文件中必须加上入口函数。
      最后,在函数定义前必须加上extern "c",_stdcall关键字。  由于DLL经常用来进行一些底层的运算操作,因此应用程序常需要传递大量的数据给DLL。在C++中,指针是进行数组操作的最佳选择,但VB中没有指针的概念。这通常可用两种方法来解决。
      其一,在VB中声明DLL时,用byref来代替byval,即可将数组指针传递给DLL。
      另外,将数组声明为变体型(variant),即可直接将数组传递给DLL。
      

  2.   

    太复杂了,呵呵.我就是这样用的:'申明
     Dim object1 As New lb_jk.COClass_n_lb_jk
    '三个按钮的使用Private Sub Command1_Click()
       Text1.Text = object1.f_readcardno()
    End SubPrivate Sub Command2_Click()
        If object1.f_linkcom() = False Then
            Text1.Text = "串口打开错误"
        Else
            Command1.Enabled = True
            Command3.Enabled = True
        End If
        
    End Sub
    Private Sub Command3_Click()
       object1.f_unlinkcom
       
    End Sub
      

  3.   

    PB写的DLL有没有测试过?
    贴出PB写的DLL的原型?
      

  4.   

    你用vbs/js测试一下,看对像有没有创建成功。