C++写的动态链接库返回字符串,在VB里为什么是乱码?该如何解决
C++写的动态链接库返回字符串,在VB里为什么是乱码?
C++里的代码如下:
LPSTR __stdcall DistributeLabel( long StartNo, long EndNo, LPSTR LabelFilePath )
{
///先完成WIN32的LPSTR类型到标准模板库中string类型的转换
const char* chrIn = LabelFilePath; //char*与LPSTR是等价的
string strIn = chrIn; //char*可以直接转化为String类型
///将string类型转换到LPSTR类型并返回值
string strOut = strIn + "D ";
const char *chrOut = strOut.c_str(); //string类型转回char*,注意 "const "必不可少
return (LPSTR)chrOut;
}
VB里调用代码如下:
Private Declare Function DistributeLabel Lib "D:\a.dll " (ByVal StartNo As Long, ByVal EndNo As Long, ByVal LabelFilePath As String) As String
Private Sub Command1_Click()
MsgBox "1: " & CStr(DistributeLabel(1, 2, "ABC "))
End Sub
可出现的结果是一串乱码,怎么解决?
------解决方案--------------------
Private Declare Function DistributeLabel Lib "D:\a.dll " (ByVal StartNo As Long, ByVal EndNo As Long, LabelFilePath As String)
这样改试下
------解决方案--------------------
strconv(CStr(DistributeLabel(1, 2, "ABC ")),vbunicode)
C++里的代码如下:
LPSTR __stdcall DistributeLabel( long StartNo, long EndNo, LPSTR LabelFilePath )
{
///先完成WIN32的LPSTR类型到标准模板库中string类型的转换
const char* chrIn = LabelFilePath; //char*与LPSTR是等价的
string strIn = chrIn; //char*可以直接转化为String类型
///将string类型转换到LPSTR类型并返回值
string strOut = strIn + "D ";
const char *chrOut = strOut.c_str(); //string类型转回char*,注意 "const "必不可少
return (LPSTR)chrOut;
}
VB里调用代码如下:
Private Declare Function DistributeLabel Lib "D:\a.dll " (ByVal StartNo As Long, ByVal EndNo As Long, ByVal LabelFilePath As String) As String
Private Sub Command1_Click()
MsgBox "1: " & CStr(DistributeLabel(1, 2, "ABC "))
End Sub
可出现的结果是一串乱码,怎么解决?
------解决方案--------------------
Private Declare Function DistributeLabel Lib "D:\a.dll " (ByVal StartNo As Long, ByVal EndNo As Long, LabelFilePath As String)
这样改试下
------解决方案--------------------
strconv(CStr(DistributeLabel(1, 2, "ABC ")),vbunicode)