我正在 MinGW 环境中工作(于 2011 年 12 月 12 日使用安装程序下载)。我正在尝试使用 Windres 编译资源 (.rc) 文件。我使用的具体命令是
Windres -O coff About1.rc -o About1.res
Run Code Online (Sandbox Code Playgroud)
Windres 生成至少 100 行警告消息:“警告:忽略空字符”。在此之后,Windres 发出:“Abouty1.rc:1:语法错误”。
事实上,About1.rc 文件中没有空字符。另外,该文件的第一行是一个包含语句:#include "dlgresource.h"。我尝试了一下并消除了这个语句,事实证明我放在那里的内容并不重要,我得到了同样的消息和语法错误通知。
更令人困惑的是,使用 MSFT 的 rc.exe 编译同一个 .rc 文件没有任何问题。生成的 .res 文件与程序 .obj 文件顺利链接并完美运行。
我不知道发生了什么事。有任何想法吗?
谢谢,马克·艾林
您的 .rc 文件可能编码为 UTF-16。
这就是 Microsoft [rc.exe] 通常所需要的,以便能够处理国际字符,但 GNU [windres.exe] 只能处理 ANSI 编码。
一种解决方法是当场将文件转换为 ANSI(可能会丢失例如俄语或希腊语字符):
> chcp 1252 活动代码页:1252 > 输入 my.rc | Windres --output-format=COFF -o my.res > _