我有一个WCF(C#应用程序(应用程序,它调用C++COM Dll。现在,C++COM dll公开的方法具有以下签名。
STDMETHODIMP MessageControl::CallMe(eEventType eventTypeVal, OUT long *pVal)
现在,我不想返回一个长的*pVal,而是希望返回一个具有多个属性的接口。类似
STDMETHODIMP MessageControl::CallMe(eEventType eventTypeVal, OUT IData *pVal)
那么对于新接口,我应该如何更新COM DLL?那么,我应该在IDL文件中为IData接口添加一个新条目吗。我是这个COM C++Dll的新手。
您需要在IDL中有一个函数,比如(假设您的接口是IMessageControl(:
interface IMessageControl
{
STDMETHOD(CallMe)(eEventType eventTypeVal, [out,retval] IData** pVal);
}
或者如果你想选择返回长或对象
interface IMessageControl
{
STDMETHOD(CallMe)(eEventType eventTypeVal, [out,retval] VARIANT* pVal);
}
您的C++代码将类似于:
STDMETHODIMP MessageControl::CallMe(eEventType eventTypeVal, IData** pVal)
{
return E_NOTIMPL;
}
或用于变体版本
STDMETHODIMP MessageControl::CallMe(eEventType eventTypeVal, VARIANT* pVal)
{
return E_NOTIMPL;
}
显然,一旦实现,返回S_OK表示良好的返回,或者返回E_类型的错误代码表示失败。