【问题标题】:Code::Blocks resource preprocessing errorCode::Blocks 资源预处理错误
【发布时间】:2013-11-25 02:36:56
【问题描述】:

我正在尝试添加一个资源文件以在 Code::Blocks 中包含我的 win32 表单应用程序的图标。我创建了resource.rc 文件并将其添加到我的项目中,并将我的图标放在项目的根文件夹中(源文件所在的位置),我不断收到预处理失败错误。

这就是我的resource.rc 文件的样子

#ifndef _resource_rc
#define _resource_rc

MAINICON ICON "icon1.ico"

#endif

我的main.cpp文件只是一个原封不动的win32表单应用程序,除了将resource.rc文件添加到项目中之外,项目本身是原封不动的。

构建消息错误是

||preprocessing failed.|
||=== Build finished: 1 errors, 0 warnings ===|

构建日志是

gcc: Files\: No such file or directory
gcc: \(x86\)\CodeBlocks\MinGW\include: No such file or directory
windres.exe: preprocessing failed.
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 0 warnings

我已经检查以确保 Code::Blocks 的安装位置以及它位于 \Program Files(x86)\ 中,gcc 似乎正在查看一个名为 \(x86)\ 的文件夹。可能是这个问题吗?

如果我删除资源文件,应用程序将正确编译并运行。

感谢您的帮助。

编辑:我已启用完整的编译器输出,这是正在运行的内容:

windres.exe -i C:\Users\user\Desktop\MENOET~1\resource.rc -J rc -o obj\Debug\resource.res -O coff -I"C:\Program Files (x86)\CodeBlocks\MinGW\include" 
gcc: Files\: No such file or directory
gcc: \(x86\)\CodeBlocks\MinGW\include: No such file or directory
windres.exe: preprocessing failed.
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 0 warnings

我注意到 MENOET~1 是我的项目目录的某种缩写名称,这不是它的实际名称。不确定这是否与它有关,我似乎无法更改它。

edit2:我设法修复它,但我宁愿不这样做。我所做的是将 MingGW 复制到 C:\,然后转到设置 -> 编译器和调试器 -> 搜索目录 -> 资源编译器,然后将该路径设置为 C:\MingGW\include。这可以消除所有错误并且构建成功,尽管我宁愿不必在我的根 C:\ 目录中有 MingGW 的副本。有什么办法可以解决这个问题,以便它可以与原始路径一起使用?我想它只是在文件名中的空格上搞砸了,但我不知道在哪里可以找到构建变量来插入引号。

【问题讨论】:

  • 我不禁注意到这一点:\(x86\)\ - 如括号内的\ 。我刚刚检查了“设置->编译器->搜索目录->资源编译器”的设置,发现它是空的。而“...directories->Compiler”下的条目是C:\Program Files (x86)\CodeBlocks\MinGW\include。您可以随时尝试重新安装它。我这样做的原因我早就忘记了,在过去。 编辑: 的意思是说 (1) 你的 resource.rc 中没有包含文件(我希望 resource.h 有一些东西喜欢#define MAINICON 100) (2) 结帐 ResEdit - www.resedit.net
  • @enhzflep 我会尝试从代码块中删除搜索目录,看看会发生什么,尽管我现在确实可以运行它,尽管不是我想要的。感谢您的建议。

标签: c++ gcc codeblocks


【解决方案1】:

根据我的推论和 enhzflep 的设置,我已经解决了这个问题。问题是由资源编译器的搜索目录路径名中的空格和字符(如括号)引起的。

为了解决这个问题,要么将资源编译器搜索目录中的任何目录移动到 C:\ 以从其名称中删除空格,要么从 code::blocks 中完全删除其引用。

两种方法都有效。将 MingGW 目录移动到 C:\,然后将新的搜索路径设置为 C:\MingGW\include 修复了这个错误,并在资源编译器菜单中删除了对该文件夹的任何引用。

两者都允许应用程序编译成功。

可以在

下找到资源编译器搜索目录

Settings -> Compiler and debugger -> Search directories -> Resource compiler

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    • 2021-12-23
    相关资源
    最近更新 更多