ATL :: CComContainedObject <包含>:C2259无法实例化抽象类

时间:2018-10-09 07:21:31

标签: c++ com 64-bit atl

我有一个ATL COM项目,我想移植到64位。

将平台更改为x64并开始构建后,我得到以下其他错误

ATL::CComContainedObject<contained>: C2259 Cannot instantiate abstract class在atlcom.h中

我也收到此错误

C2338 CAtlDllModuleT<T> must be used with either _WINDLL or _USRDLL 在atlbase.h

它可以在32bit上正常编译。有谁知道如何解决这个问题? 我已经找到了类似的问题和答案,但是我不明白如何在我的情况下应用它。

https://social.msdn.microsoft.com/Forums/vstudio/en-US/d6144eaa-fa37-4133-87a0-75a06633209b/compiling-64bit-results-in-a-2259-cannot-instantiate-abstract-class?forum=vclanguage

我之前发布了一个类似的更广泛的问题:

ATL COM 32-bit dll to 64-bit non-COM dll

1 个答案:

答案 0 :(得分:0)

如上面的注释所述,问题的根源在于Visual Studio 64位项目文件的设置。许多重要参数设置不正确。根据32位配置文件更新了64位配置文件后,它构建成功,没有错误。