VB调用DLL出错,求高手帮忙

zhxc87 2012-11-12 04:08:44
我用VB6.0创建了一个activexDLL,名称为SH.DLL,在其中定义了MIS1,MIS2,MIS33个类文件,
其中MIS1定义了一个函数Public Function Trans(Request As MIS2, Response As MIS3) As Long,
MIS2中定义了输入的数据类型:Public PNumber As String Public SNumber As String等一些数据
MIS3中定义了一些要输出的数据类型:Public PNumber As String Public SNumber As String
我另外用VB6.0做了一个EXE测试程序,代码如下:
Private Sub Command1_Click()
Dim a As Object
Dim b As Object
Dim c As Object
Set a = CreateObject("SH.MIS1")
Set b = CreateObject("SH.MIS2")
Set c = CreateObject("SH.MIS3")
Dim ret As Long
With b
.PNumber = 1
.SNumber = 2
End With
ret = a.Trans(b, c)
End Sub
在执行到ret = a.Trans(b, c) 会返回“运行时错误13:类型不匹配”的错误
如果我把代码修改成如下:
Private Sub Command1_Click()
Dim a As New SH.MIS1
Dim b As New SH.MIS2
Dim c As New SH.MIS3
With b
.PNumber = 1
.SNumber = 2
End With
ret = a.Trans(b, c)
End Sub
并在工程--引用里增加SH.DLL的引用,就可以正常运行,没有报错
谁可以告诉我这两个调用方法的区别是什么吗?
如果我需要使用第一种调用方法,我应该怎么去修改程序,才能不报错?
...全文
84 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhxc87 2012-11-13
  • 打赏
  • 举报
回复
能帮忙写个简单的实例程序吗?创建一个DLL,然后在EXE程序中调用DLL
of123 2012-11-13
  • 打赏
  • 举报
回复
你定义的是用户数据类型,而不是对象。就你现在的需求,也没有必要定义对象。 所谓第一种方法,你可以看看有关类模块。
zhxc87 2012-11-13
  • 打赏
  • 举报
回复
希望高手来帮忙看下啊,非常感谢啊

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧