【发布时间】:2016-06-26 08:10:54
【问题描述】:
类似this thread,但是当我将字符串传递给方法时,com类中的字符串是错误的,代码如下:
com 服务器 - Com.idl:
interface IParamClass : IUnknown
{
[] HRESULT SetString([in] BSTR str);
}
interface IMyClass : IUnknown
{
[] HRESULT PassComClassAsParam([in] IParamClass* parm);
}
参数类.cpp
class ATL_NO_VTABLE CParamClass : ...
{
...
public:
BSTR m_str;
STDMETHOD(SetString)(BSTR str);
};
STDMETHODIMP CParamClass::SetString(BSTR str)
{
m_str = str;
return S_OK;
}
MyClass.cpp:
STDMETHODIMP CMyClass::PassComClassAsParam( IParamClass* param)
{
CParamClass *obj = (CParamClass*)param;
BSTR str = obj->m_str; //debugging here, is wrong string
...
}
C# 客户端:
MyClass myobj = new MyClass();
ParamClass param = new ParamClass();
param.SetString("Test String!");
myobj.PassComClassAsParam(param);
【问题讨论】: