描述:
服务端文档类:
CMdiCadInplaceDoc : public COleServerDoc
提供接口,内联类实现:IMySrvItem
客户端容器类:
CMdiCadContainer2CntrItem : public COleClientItem
查询接口如下:
IMySrvItem* px = NULL;
HRESULT hr = m_lpObject->QueryInterface(IID_IMySrvItem, (void**)&px);
已知:
此QI调用可以进入服务端的实现函数,且返回S_OK:
STDMETHODIMP CMdiCadInplaceDoc::XMySrvItem::QueryInterface(
REFIID iid, LPVOID* ppvObj)
{
METHOD_PROLOGUE_EX_(CMdiCadInplaceDoc, MySrvItem)
return (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);
}
C/S分别在不同的进程中。
为什么客户端就返回了E_NOINTERFACE呢?服务端返回的是S_OK啊。
解决方案1:
MARK一下.
解决方案2:http://msdn.microsoft.com/msdnmag/issues/0800/Wicked/
解决方案3:有没有把tlb嵌入到资源里?