首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

为何VC6调VB.NET所作COM总是返回第一个字符?解决方法

2014-07-14 
为何VC6调VB.NET所作COM总是返回第一个字符?用VB.net写的COM,由VC6调用,其它函数都能正常调用,但下面的函

为何VC6调VB.NET所作COM总是返回第一个字符?
 
用VB.net写的COM,由VC6调用,其它函数都能正常调用,但下面的函数总是报错。

VC6函数声明已经明确如下:
void __stdcall GetName(char* pdata);

请问VB.NET 里如何定义函数,才能被上面的VC6函数调用?多谢。

尝试用 sub VB_GetName(byref name as string),总是报“不能从char* 到BSTR* 转化”。

然后我在VC6的函数里强制把pdata转化(BSTR*)pdata,然后调用VB.net的函数VB_GetName,结果总是返回赋值(如"ABC")的第一个字符"A",其它字符无法返回。请教高手指点~~~


VC6

void __stdcall GetName(char* pdata)
{
//获得vb.net com类指针并实例化,得到p。此处没问题,已在其它函数正常使用了。  
p->VB_GetName((BSTR*)pdata);
}

VB.net

sub VB_GetName(byref name as string)

name ="ABC"
end sub


调用返回后只能得到A,也就是首字母,如何得到其它字母呢?

[解决办法]
应为:

C/C++ code
void __stdcall GetName(char* pdata){//获得vb.net com类指针并实例化,得到p。此处没问题,已在其它函数正常使用了。     p->VB_GetName((_bstr_t(pdata));}
[解决办法]
C/C++ code
void __stdcall GetName(char* pdata){  _bstr_t  bstrName;   p->VB_GetName(bstrName.GetAddress());  strcpy(pdata, bstrName);} 

热点排行