【发布时间】:2019-03-13 21:35:58
【问题描述】:
我有一个 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
它在 32 位上编译得很好。有谁知道如何解决这个问题? 我找到了这个类似的问题和答案,但我不明白如何在我的案例中应用它。
我之前发布了一个类似的更广泛的问题:
【问题讨论】:
-
ATL 与 64 位兼容,但这并不意味着您可以采用任何现有的(旧的?)项目并希望它能够构建没有问题的 Win64。最初的错误非常笼统,它只是意味着定义和实现之间存在问题(可能是参数大小、属性、指针等很多东西)。您可能在类/方法等的详细输出中有更多信息。如果没有更多细节,很难提供帮助。另一种解决方案是使用新的 VS 2017 模板开始一个新项目,并逐个添加文件(更多的工作,但你会知道你在做什么)
-
@SimonMourier 感谢您的评论。看来我犯了一个非常新手的错误。我没有花时间将设置从 32 位配置文件复制到 64 位。很多重要的参数都没有设置好。更新 64 位配置文件后,它的构建没有问题。现在还有待测试 64 位 dll 是否按预期工作。
-
你应该自己回答