我想在VB和C++dll之间传递字符串。以下代码从VB->C++没有问题,但是返回的时候就会产生错误直接导致VB关闭。
请问用什么类型可以完成我想要的传递,或者是用什么方法完成传递?
VB主程序中的调用代码段:
Private Sub Command1_Click() 'debug
Dim a As String
SaveRemark "123", "abc1de"
a = String(200, "0")
QueryRemark "123", a
MsgBox a
End Sub
C++dll中的函数
BOOL __stdcall QueryRemark(LPSTR PicName,char* ReturnValue)
{
strcpy_s(ReturnValue,100,"1234abc");
return 0 ;
}
VB中的dll函数声明
Public Declare Function SaveRemark Lib "SupportDll.dll" (ByVal PicName As String, ByVal Remark As String) As Long
Public Declare Function QueryRemark Lib "SupportDll.dll" (ByVal PicName As String, ByRef ReturnValue As String) As Long
没定义UNICODE的情况下LPSTR就是char*
建立文件中转有点太浪费效率了。。。还有没有别的办法?
|