VB向DLL传递字符串数组的问题!
在VB中调用DLL时,碰到了传递字符串数组的问题,解决不了.
DLL函数原型为:
DATAINTERFACE_API short  (__stdcall GetCurValueList)(char* p[]); 
VB中的声明为:
Public Declare Function GetCurValueList Lib "DataInterface.dll" (pszExtName As Any) As Integer
VB中的调用:
Dim pszName(3) As String
pszName(0) = "DA00000"
pszName(1) = "DA00001"
pszName(2) = "DA00002"
GetCurValueList pszName(0)
结果传递过去在DLL中只能正确读到p[0]的值与pszName(0)的值相同,但是p[1]和p[2]的值都不对。
哪位高手知道帮忙解决,谢谢
思考一下本质,你就明白了
下面是一种方法:
Public Declare Function GetCurValueList Lib "DataInterface.dll" (pszExtName As Any) As Integer
vb 字符串转数组
Dim pszName(2) As Long
Dim asStr(2) As String
Dim i As Long
asStr(0) = StrConv("DA00000" & Chr(0), vbFromUnicode)
asStr(1) = StrConv("DA00001" & Chr(0), vbFromUnicode)
asStr(2) = StrConv("DA00002" & Chr(0), vbFromUnicode)
For i = 0 To 2
pszName(i) = StrPtr(asStr(i))
Next
Call GetCurValueList(pszName(0))
此外,你也可以直接在vc那端将参数声明为SAFEARRAY,这样就不用这么麻烦传了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。