【发布时间】:2015-10-01 15:17:30
【问题描述】:
我正在尝试将某个文本文件作为资源嵌入到我的 EXE 中,但我玩得很开心。
我制作了一个简单的单行 .rc 文件并将其添加到项目中,但 BRCC32 因一个完全无用的错误而窒息:
[BRCC32 Error] MyRes.rc(1): Fatal error Illegal macro definition in command line or defined page.
这是文件的全部内容:
DATA_BASIC_ORDER RCDATA Data\Data_BasicOrder.txt
仅当我在 IDE 中构建时才会发生这种情况。我能够在命令行上成功地构建一个 .RES 文件,并在十六进制编辑器中打开它会显示资源名称和文本文件的内容,但如果我用 {$R} 指令链接它,资源不会出现在 EXE 中。我用 ResHacker 验证了它;资源不存在。所以发生了一些非常奇怪的事情。
我已尝试关闭并重新启动 IDE。不用找了。我还在十六进制编辑器中打开了.rc 文件,以确保没有奇怪的字符搞砸了,但不,这是一个纯 ANSI 文本文件。
有谁知道这是怎么回事以及如何解决它?
编辑:它变得越来越奇怪。如果我将文件行完全留空,我仍然会收到同样的错误。但是,如果我从项目中删除该文件(从项目资源管理器中的列表中删除它),该错误消息就会消失,但它仍然没有出现在构建中。
【问题讨论】:
-
我们如何重现这个?没有复制,这将是棘手的。
-
@DavidHeffernan:是的,不幸的是,这是一个工作项目,所以至少可以说分享一个复制案例也很棘手。我希望这里有人以前看过这个错误消息并且知道如何处理它。谷歌搜索后,我看到一些人询问这个错误,没有人得到任何有用的答案,所以我在这里有点走投无路。我想,“帮帮我,Obi-Wan Stackovi,你是我唯一的希望!”
-
我从来没有过多地使用 RC 文件,也没有读过太多关于它们的信息。我唯一注意到的是,当使用 ANSI 以外的文件格式时,它们往往会出现这种错误。
-
@KenBourassa:感谢您的来信。这是我已经检查过的一件事,不幸的是,在十六进制编辑器中打开它以确保它是 ANSI。
-
我可以确认这个问题。永远不会创建 .res 文件。如果您在指定 .res 和 rc 文件的行中保留该行,则即使您先从命令行编译该资源,也不会链接该资源。如果从命令行编译,然后使用
{$R MyResource.res}构建,则资源添加正确。