在C++dll和VB之间传递字符串 70

我想在VB和C++dll之间传递字符串。以下代码从VB->C++没有问题,但是返回的时候就会产生错误直接导致VB关闭。请问用什么类型可以完成我想要的传递,或者是用什么方法... 我想在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*
建立文件中转有点太浪费效率了。。。还有没有别的办法?
展开
 我来答
bydosniper
2013-12-09 · TA获得超过1059个赞
知道小有建树答主
回答量:605
采纳率:100%
帮助的人:257万
展开全部
VB是基于COM组件的,虽然执行效率低,但是开发效率高,同时带来的问题是技术对开发人员透明了

VB传递给C/C++时自动转为char *类型,但是vb的string其实是BSTR类型,即Basic String
你不能传递char *给vb否则vb得到的是Long(Any)是指针的值,这样VB只能能用CopyMemory另外处理了
好奇的布丁
2008-12-06 · TA获得超过272个赞
知道答主
回答量:31
采纳率:0%
帮助的人:0
展开全部
C++dll中的函数
BOOL __stdcall QueryRemark(LPSTR PicName,char* ReturnValue)

改为
BOOL __stdcall QueryRemark(LPSTR PicName,LPSTR ReturnValue)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
李盛鑫2008
2008-12-06 · 超过11用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:0
展开全部
恩 用文件转不行吗
比如生成一个TXT文件作为中转文件
只是猜想
如有雷同 纯属巧合
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式