关于VB调用VC制作的动态链接库时VC方面的字符指针转换成VB里面的字符串问题。
具体如下:
VB函数如下:
Private Sub Read_Data_Click()
Dim iStartAdds, iLen, sData As String
Dim rst As Long
iStartAdds = decval(StartAddress.Text)
iLen = decval(DataLen.Text)
sData = Space(3000)rst = CardMem_Read(1, GetCardType(), iStartAdds, iLen, sData, 2)
'这个函数是VC制作的动态链接库里面的函数,sData,是调用函数后返回来的字符串指针
DataRW.Text = sData
ResultMSG (rst)
End Sub
VB里面函数申明如下:
Private Declare Function CardMem_Read Lib "D:\VBProj\DLLDemo0828\CardRdDll.dll" (ByVal nPort As Integer, ByVal nCardType As Integer, ByVal nAddr As Integer, ByVal nLen As Integer, ByVal sResp As String, ByVal fAscToBCD As Integer) As Long
在VB环境下调试会自动关闭VB程序,这是因为内存的分配问题没有分配足够的空间,如何解决?
在VC环境下调试能够得到我要的数据,但是,也是执行不下去,郁闷,不知哪位高手可以帮忙。
具体如下:
VB函数如下:
Private Sub Read_Data_Click()
Dim iStartAdds, iLen, sData As String
Dim rst As Long
iStartAdds = decval(StartAddress.Text)
iLen = decval(DataLen.Text)
sData = Space(3000)rst = CardMem_Read(1, GetCardType(), iStartAdds, iLen, sData, 2)
'这个函数是VC制作的动态链接库里面的函数,sData,是调用函数后返回来的字符串指针
DataRW.Text = sData
ResultMSG (rst)
End Sub
VB里面函数申明如下:
Private Declare Function CardMem_Read Lib "D:\VBProj\DLLDemo0828\CardRdDll.dll" (ByVal nPort As Integer, ByVal nCardType As Integer, ByVal nAddr As Integer, ByVal nLen As Integer, ByVal sResp As String, ByVal fAscToBCD As Integer) As Long
在VB环境下调试会自动关闭VB程序,这是因为内存的分配问题没有分配足够的空间,如何解决?
在VC环境下调试能够得到我要的数据,但是,也是执行不下去,郁闷,不知哪位高手可以帮忙。
Dim iStartAdds as Integer, iLen as Integer, sData As String
使用的时候 dim sdata as string
sdata=space(3000)
带入函数的时候 用strptr(stada)