我在作回调的时候,采用的是mfc写的客户程序。
为什么编译不过去,先将程序列出来,谢谢各位帮忙。
视图代码:(在其中加了一个类CCallBack
#include <atlbase.h>
CComModule _Module;
#include <atlcom.h>
#include <atlimpl.cpp>//#define WIN32_DCOM 0x0500BEGIN_OBJECT_MAP(ObjectMap)
END_OBJECT_MAP()class CCallBack :
public CComObjectRoot,
public ICallBack
{public:
CCallBack() {};
~CCallBack() {};BEGIN_COM_MAP(CCallBack)
COM_INTERFACE_ENTRY(ICallBack)
END_COM_MAP()// ICallBack
public:
public:STDMETHODIMP ComeBack()
{
MessageBox(NULL,"I have come back!","OK!",MB_OK);
return S_OK;
}
};实现方法:void CClient1View::OnStart()
{
// TODO: Add your command handler code here
HaveStart = true;
HRESULT hr;
CoInitialize(0);
hr = CoCreateInstance(CLSID_Test,
NULL,
CLSCTX_SERVER,
IID_ITest,
(void**)&pTest); #ifdef NEED_FINAL_CONSTRUCT
CComObject<CCallBack>* m_pCallBack;
CComObject<CCallBack>::CreateInstance(&m_pCallBack);
#else
CComObject<CCallBack>* m_pCallBack = new CComObject<CCallBack>;
#endif CComPtr<ICallBack> ptrCallBack ;
m_pCallBack->QueryInterface( IID_ICallBack, (void**) &ptrCallBack ); hr = pTest->Advise(ptrCallBack); hr = pTest->SendData(); hr = pTest->Unadvise();
}
提示错误:
:\userfile\ok\CallDisp\client1\client1View.cpp(165) : error C2259: 'CComObject<class CCallBack>' : cannot instantiate abstract class due to following members:
D:\userfile\ok\CallDisp\client1\client1View.cpp(165) : warning C4259: 'long __stdcall ICallBack::Nothing(void)' : pure virtual function was not defined
d:\userfile\ok\calldisp\calldisp.h(179) : see declaration of 'Nothing'
D:\userfile\ok\CallDisp\client1\client1View.cpp(165) : error C2259: 'CComObject<class CCallBack>' : cannot instantiate abstract class due to following members:
D:\userfile\ok\CallDisp\client1\client1View.cpp(165) : warning C4259: 'long __stdcall ICallBack::Nothing(void)' : pure virtual function was not defined
d:\userfile\ok\calldisp\calldisp.h(179) : see declaration of 'Nothing'
Error executing cl.exe.谢谢
client1.exe - 2 error(s), 2 warning(s)
为什么编译不过去,先将程序列出来,谢谢各位帮忙。
视图代码:(在其中加了一个类CCallBack
#include <atlbase.h>
CComModule _Module;
#include <atlcom.h>
#include <atlimpl.cpp>//#define WIN32_DCOM 0x0500BEGIN_OBJECT_MAP(ObjectMap)
END_OBJECT_MAP()class CCallBack :
public CComObjectRoot,
public ICallBack
{public:
CCallBack() {};
~CCallBack() {};BEGIN_COM_MAP(CCallBack)
COM_INTERFACE_ENTRY(ICallBack)
END_COM_MAP()// ICallBack
public:
public:STDMETHODIMP ComeBack()
{
MessageBox(NULL,"I have come back!","OK!",MB_OK);
return S_OK;
}
};实现方法:void CClient1View::OnStart()
{
// TODO: Add your command handler code here
HaveStart = true;
HRESULT hr;
CoInitialize(0);
hr = CoCreateInstance(CLSID_Test,
NULL,
CLSCTX_SERVER,
IID_ITest,
(void**)&pTest); #ifdef NEED_FINAL_CONSTRUCT
CComObject<CCallBack>* m_pCallBack;
CComObject<CCallBack>::CreateInstance(&m_pCallBack);
#else
CComObject<CCallBack>* m_pCallBack = new CComObject<CCallBack>;
#endif CComPtr<ICallBack> ptrCallBack ;
m_pCallBack->QueryInterface( IID_ICallBack, (void**) &ptrCallBack ); hr = pTest->Advise(ptrCallBack); hr = pTest->SendData(); hr = pTest->Unadvise();
}
提示错误:
:\userfile\ok\CallDisp\client1\client1View.cpp(165) : error C2259: 'CComObject<class CCallBack>' : cannot instantiate abstract class due to following members:
D:\userfile\ok\CallDisp\client1\client1View.cpp(165) : warning C4259: 'long __stdcall ICallBack::Nothing(void)' : pure virtual function was not defined
d:\userfile\ok\calldisp\calldisp.h(179) : see declaration of 'Nothing'
D:\userfile\ok\CallDisp\client1\client1View.cpp(165) : error C2259: 'CComObject<class CCallBack>' : cannot instantiate abstract class due to following members:
D:\userfile\ok\CallDisp\client1\client1View.cpp(165) : warning C4259: 'long __stdcall ICallBack::Nothing(void)' : pure virtual function was not defined
d:\userfile\ok\calldisp\calldisp.h(179) : see declaration of 'Nothing'
Error executing cl.exe.谢谢
client1.exe - 2 error(s), 2 warning(s)
好像主要的原因是:
\userfile\ok\CallDisp\client1\client1View.cpp(165) : error C2259: 'CComObject<class CCallBack>' : cannot instantiate abstract class due to following members:
和
D:\userfile\ok\CallDisp\client1\client1View.cpp(165) : error C2259: 'CComObject<class CCallBack>' : cannot instantiate abstract class due to following members:我不知道怎么去改了。