【问题标题】:Non MFC ATL project (dll) produces MFC related errors非 MFC ATL 项目 (dll) 产生 MFC 相关错误
【发布时间】:2023-03-14 22:25:01
【问题描述】:

我创建了一个干净的(非 MFC)atl 项目, 添加了一个对话框和一些位图,编译时出现 3 个 MFC 相关错误:

WINDOWS.H 已经包含在内。 MFC 应用程序不得#include @afxv_w32.h

使用 /MD[d] 构建 MFC 应用程序(CRT dll 版本) 需要 MFC 共享 dll 版本。请#define _AFXDLL 或不要使用 /MD[d]@afx.h

既然这个项目与 MFC 无关 - 为什么会出现这些错误? (在项目设置中:“使用 MFC”= 使用标准 Windows 库。

我检查了预处理器的定义: WIN32 _视窗 _调试 _USRDLL

这里也没有。

有什么想法吗?

更新:我发现我做错了什么。我没有从类向导中添加对话框,而是在资源视图中创建了它,然后添加了一个类。这将创建一个 MFC 类而不是 ATL 类。

【问题讨论】:

  • 您看到不知何故包含了 MFC。 (添加对话框时?或通过#include)。非 MFC 项目不会发生这种情况。
  • 刚刚添加了一个对话框,ATL 对话框,没有什么我以前没有做过的。我在类似的项目中做过不止一次。我正在比较,这次没有发现任何不同。
  • 使用/showIncludes 编译器选项找出为什么包含<afxv_w32.h> 并从那里开始工作。
  • 我看到了包含,我不知道是什么原因造成的。看来我必须在每一步之后重新开始并重新编译,以找出触发此错误的原因....

标签: c++ visual-studio-2012 mfc atl


【解决方案1】:

我发现出了什么问题,在这里更新,以供将来的用户使用,因为 ATL 的文档非常差。

我在资源视图中添加了一个对话框,然后为它添加了一个类。那是错误。添加的类是 MFC 类,虽然项目不应该支持 MFC。

如果您希望保持项目干净(来自 MFC),您需要通过 Class View Add Class 添加对话框,如本文所述:

Add ATL Dialog Box

如果不是 ATL,我会将其作为错误发布给 MS,但我认为他们仍然不关心这项技术。

【讨论】:

    猜你喜欢
    • 2013-09-08
    • 2013-09-12
    • 2011-02-08
    • 2012-09-05
    • 2012-11-07
    • 2016-06-21
    • 2011-02-11
    • 1970-01-01
    • 2010-12-16
    相关资源
    最近更新 更多