描述:
刚刚开始第一个ActviceX工程.定义了一些自定义结构.
typedef struct myInfo
{
BSTR strX;
BSTR strY;
}
有一个方法 f(myInfo* info)返回该结构.
在vb 和 c#中引用该自定义结构.
dim info as XXXX.lib.myInfo
f(info)
msgBox info.strX
返回的info.strX是乱码.不知为何.在C#中也是如此.(strX包含中文).
请教各位.
解决方案1:
1st. COM 中的字符串最好都用BSTR,所以CString strFilter 应为 BSTR strFilter
2nd. 你的f()不过是将原来的WINAPI从新做了下COM封装,必要性有多大?
3rd. hDelegateDll中FindWareInfo()(LPCSTR,WareInfo*)的原型是什么?结构WareInfo和你的结构 myInfo 一样吗?
4th. 从你的定义 typedef bool (CALLBACK * FINDWAREINFO)(LPCSTR,WareInfo*); 上来看,FINDWAREINFO 应该是一个回调函数,你这样用对吗?
1st. 输出型参数为结构时,应该用指针的指针,即f(myInfo** info)
2nd. 结构中的BSTR也应该由你的ActviceX分配内存,由调用者释放
把你的f()方法贴上来,大家帮你看看
up