为何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,也就是首字母,如何得到其它字母呢?
[解决办法]
应为:
void __stdcall GetName(char* pdata){//获得vb.net com类指针并实例化,得到p。此处没问题,已在其它函数正常使用了。 p->VB_GetName((_bstr_t(pdata));}
[解决办法]
void __stdcall GetName(char* pdata){ _bstr_t bstrName; p->VB_GetName(bstrName.GetAddress()); strcpy(pdata, bstrName);}