VB调用DLL的问题,急急急

2025-02-01 17:50:34
推荐回答(2个)
回答1:

对于要传出的字符串,最安全的做法是先建立字节数组,然后传递给dll函数首字节地址。

声明为:
Public Declare Function ReadCardInfo Lib "card.dll" (ByVal ComPort As Integer, CardNum As byte, CardNum1 As byte, CardID As byte, CardType As long, ExpireDay As byte) As Integer

调用时:

ret=ReadCArdInfo(comPort,CardNum(0),CardNum1(0),CardID(0),CardType,ExpireDay(0))

返回的字节数组如果想要变成字符串需要用StrConv函数转化为unicode

一楼的做法理论上是可行的,但是我用的时候经常出问题,所以习惯于用数组来传递参数

回答2:

首先声明:在模块或窗体的声明部分(自己选择是Private还是Public)
Private/Public Declare Function ReadCardInfo Lib "card.dll" (ByVal ComPort As Integer, ByVal CardNum As String, ByVal CardNum1 As String, ByVal CardID As String, ByRef CardType As Integer, ByVal ExpireDay As String) As Integer
然后去调用

ret = ReadCardInfo(。。。。。。)

注意你原来写的int是多少位的,vb的integer是16位的,long是32位的,如果上面写的int是32位的话请自己把Integer替换成Long,应该是可以用的。。。您尝试一下