描述:
工具vs2005
用ATL向导生成了基于可执行exe的本地服务器test.exe,并用向导添加了类CA(自由线程),IA只实现 IUnkown接口。(未写任何代码,只是向导生成的代码)
用MFC生成了一个程序调用接口IA。但是只能返回类厂和IUnkown的接口指针,得不到IA接口指针。
代码如下:
::CoInitializeEx(0, COINIT_MULTITHREADED);
HRESULT hr;
IClassFactory* pICF = NULL;
hr = CoGetClassObject(CLSID_a, CLSCTX_LOCAL_SERVER,NULL,IID_IClassFactory,(void**)&pICF);//可以得到
if ( FAILED(hr) )
{
int sdf = 0;
}
IUnknown * pUnknown = NULL;
hr = pICF->CreateInstance(NULL,IID_IUnknown,(void**)&pUnknown);//也可以以得到
if ( FAILED(hr) )
{
int sdf = 0;
}
CComPtr<Ia> p;
HRESULT hy = pICF->QueryInterface(IID_Ia, (void**)&p);//此时返回E_NOINTERFACE
pICF->Release();
pUnknown->Release();
::CoUninitialize();
请问是什么问题?谢谢
解决方案1:
用pUnknown去查
HRESULT hy = pUnknown->QueryInterface(IID_Ia, (void**)&p);
或直接赋值给接口指针
p = pUnknown;
HRESULT hy = pUnknown->QueryInterface(IID_Ia, (void**)&p);