Code :: Blocks资源预处理错误

时间:2013-11-23 22:43:40

标签: c++ gcc codeblocks

我正在尝试添加一个资源文件,以便在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的副本。有没有办法解决这个问题,以便它可以与原始路径一起使用?我想它只是文件名中的空格,但我无法找出在哪里找到构建变量来插入引号。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

您可以在

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

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