为平台设置为x64构建时,atlcom.h构建错误

时间:2013-01-16 07:21:22

标签: visual-c++ 64-bit atl

我正在将现有的c ++项目从32位版本转换为64位版本。这个项目在32位版本中构建良好,在Configuration Manager中转换为x64平台的构建之后,我得到了以下版本错误,是否有任何特定的我必须继承64位版本或者我错过任何东西。

错误C2259:'ATL :: CComObject':无法实例化抽象类 C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ atlmfc \ include \ atlcom.h

以下是构建项目时输出中的错误。

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\atlcom.h(2000): error C2259: 'ATL::CComObject<Base>' : cannot instantiate abstract class
          with
          [
              Base=NAlertBand
          ]
          due to following members:
         'HRESULT IContextMenu::GetCommandString(UINT_PTR,UINT,UINT *,CHAR *,UINT)' : is abstract
          C:\Program Files (x86)\Windows Kits\8.0\Include\um\shobjidl.h(2732) : see declaration of 'IContextMenu::GetCommandString'
          C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\atlcom.h(1989) : while compiling class template member function 'HRESULT ATL::CComCreator<T1>::CreateInstance(void *,const IID &,LPVOID *)'
          with
          [
              T1=ATL::CComObject<NAlertBand>
          ]
          C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\atlcom.h(2096) : see reference to function template instantiation 'HRESULT ATL::CComCreator<T1>::CreateInstance(void *,const IID &,LPVOID *)' being compiled
          with
          [
              T1=ATL::CComObject<NAlertBand>
          ]
          C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\atlcom.h(2095) : see reference to class template instantiation 'ATL::CComCreator<T1>' being compiled
          with
          [
              T1=ATL::CComObject<NAlertBand>
          ]
          C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\atlcom.h(2091) : while compiling class template member function 'HRESULT ATL::CComCreator2<T1,T2>::CreateInstance(void *,const IID &,LPVOID *)'
          with
          [
              T1=ATL::CComCreator<ATL::CComObject<NAlertBand>>,
              T2=ATL::CComFailCreator<-2147221232>
          ]
          NAlerts.cxx(44) : see reference to function template instantiation 'HRESULT ATL::CComCreator2<T1,T2>::CreateInstance(void *,const IID &,LPVOID *)' being compiled
          with
          [
              T1=ATL::CComCreator<ATL::CComObject<NAlertBand>>,
              T2=ATL::CComFailCreator<-2147221232>
          ]
          NAlerts.cxx(44) : see reference to class template instantiation 'ATL::CComCreator2<T1,T2>' being compiled
          with
          [
              T1=ATL::CComCreator<ATL::CComObject<NAlertBand>>,
              T2=ATL::CComFailCreator<-2147221232>
          ]
  QMessage.cxx

由于

1 个答案:

答案 0 :(得分:2)