【问题标题】:Cannot open resource file in VS 2015: Can't open include file afxres.h无法在 VS 2015 中打开资源文件:无法打开包含文件 afxres.h
【发布时间】:2016-05-27 23:22:23
【问题描述】:

我使用自动转换工具将我的 VS 2012 项目转换为 VS 2015。当我尝试加载资源文件 (.rc) 时失败并出现以下错误:

fatal error RC1015: cannot open include file afxres.h

有什么想法吗?

【问题讨论】:

  • afxRes.h 是 MFC 标头。您的 VS 2015 安装是否包含 MFC?
  • @fxiv 你是对的,但不幸的是,至少 VS2010 已经将“#include afxres.h”也放入了非 MFC 控制台应用程序的 rc 文件中,所以这种依赖关系有点令人惊讶。

标签: visual-studio-2015


【解决方案1】:

我使用的是 VS 2017,不需要安装 MFC。您可以改为将标题更改为#include "winres.h"#if 的定义还有其他一些小的变化,所以我强烈建议您创建一个新的 .rc 资源文件并进行 A/B 比较以查看差异(差别不大)。我只是比较了新旧并迁移了差异。

【讨论】:

    【解决方案2】:

    This answer 在汤森路透网站上为我工作。为其他用户添加:

    您可能需要修改 Visual Studio 2015 设置并添加 MFC。

    请关闭 VS2015 并进入控制面板 -> 程序和功能 -> Microsoft Visual Studio -> 更改 -> 修改 -> 添加 Microsoft 基础类

    见下图:

    【讨论】:

    • 为我在新机器上的 VS2019 C++ 项目中修复了错误!
    【解决方案3】:

    我发现没有MFC 的控制台应用程序与使用Visual Studio 2010 生成的问题相同。

    一种解决方案是将Visual Studio 2015 的安装修改为包括MFCMFC 默认不安装,因为它的大小。但在我看来,只有当你的应用程序使用 MFC 时才应该应用它。

    如果afxres.h 只需要MFC,则可以替换

    #include "afxres.h"
    [...]
    "#include ""afxres.h""\r\n"
    

    #include "WinResrc.h"
    [...]
    "#include ""WinResrc.h""\r\n"
    

    您可能需要添加(但您会在编译资源时看到)。

    #define IDC_STATIC -1
    [...]
    "#define IDC_STATIC -1""\r\n"
    

    正如您在 rc 文件中看到的,其中一个部分是 TEXTINCLUDE。当Visual Studio 的资源编辑器打开 rc 文件并将其保存回光盘时,它会获取此部分并将文本放入标有 “Generated from the TEXTINCLUDE [...]” 的部分中。因此,请注意至少更改 TEXTINCLUDE 部分的两个位置,以便资源编辑器可以完成剩下的工作。

    【讨论】:

    • 很好的解决方案!在将旧的 VS2013 项目移动到没有 MFC 的全新 VS2017 安装时,我遇到了同样的问题。用 WinResrc 替换 afxres 解锁了我的构建。
    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多