怎样给COM添加方法
我通过 add method 给COM添加一个方法后它总会报两个错误两个警告c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : error C2259: 'CComObject<class CTest>' : cannot instantiate abstract class due to following members:
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CTest> >::CreateInstance(void *,const struct _GUID &,void
** )'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : warning C4259: 'long __stdcall ITest::InitParam(unsigned char *,unsigned char *)' : pure virtual function was not defined
d:\lhb\vc\comtest\comtest.h(80) : see declaration of 'InitParam'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CTest> >::CreateInstance(void *,const struct _GUID &,void
** )'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : error C2259: 'CComObject<class CTest>' : cannot instantiate abstract class due to following members:
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CTest> >::CreateInstance(void *,const struct _GUID &,void
** )'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : warning C4259: 'long __stdcall ITest::InitParam(unsigned char *,unsigned char *)' : pure virtual function was not defined
d:\lhb\vc\comtest\comtest.h(80) : see declaration of 'InitParam'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CTest> >::CreateInstance(void *,const struct _GUID &,void
** )'
Generating Code...
Error executing cl.exe.COMTest.dll - 2 error(s), 2 warning(s)不知道是不是我少引用了什么头文件还是需要从哪里进行处理
在网上我没有搜到这么简单的入门问题,希高手指点,先行谢过^_^
我通过 add method 给COM添加一个方法后它总会报两个错误两个警告c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : error C2259: 'CComObject<class CTest>' : cannot instantiate abstract class due to following members:
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CTest> >::CreateInstance(void *,const struct _GUID &,void
** )'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : warning C4259: 'long __stdcall ITest::InitParam(unsigned char *,unsigned char *)' : pure virtual function was not defined
d:\lhb\vc\comtest\comtest.h(80) : see declaration of 'InitParam'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CTest> >::CreateInstance(void *,const struct _GUID &,void
** )'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : error C2259: 'CComObject<class CTest>' : cannot instantiate abstract class due to following members:
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CTest> >::CreateInstance(void *,const struct _GUID &,void
** )'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : warning C4259: 'long __stdcall ITest::InitParam(unsigned char *,unsigned char *)' : pure virtual function was not defined
d:\lhb\vc\comtest\comtest.h(80) : see declaration of 'InitParam'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CTest> >::CreateInstance(void *,const struct _GUID &,void
** )'
Generating Code...
Error executing cl.exe.COMTest.dll - 2 error(s), 2 warning(s)不知道是不是我少引用了什么头文件还是需要从哪里进行处理
在网上我没有搜到这么简单的入门问题,希高手指点,先行谢过^_^
另外,估计是你这增加的方法只是写了函数声明,忘记了添加实现部分代码。
应该在实现COM对象的类中-->接口中添加方法
不要在外面那个添加
STDMETHODIMP CTest::InitParam(char *szUid, char *szPwd)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here return S_OK;
}它自动生成的
我连代码都还没加呢:(
是按照你说的方法添加的
若不行,程序只能重建了
[in]unsigned char *szUid, [out]unsigned char *szPwd
我再试一试其他类型需要注意哪些阿??
譬如 int long
我选了支持MFC的
参数支不支持CString型呢???
你还是看《COM本质论》吧,上面讲很清楚