如何处理“命令行中的非法宏定义或定义页面”错误?

时间:2015-10-01 15:17:30

标签: delphi delphi-xe

我正在尝试将某个文本文件作为资源嵌入到我的EXE中,而且我有一段时间了。

我制作了一个简单的单行.rc文件,并将其添加到项目中,但是BRCC32对它进行了扼流,完全没有任何帮助:

  

[BRCC32错误] MyRes.rc(1):致命错误命令行或定义页面中的非法宏定义。

以下是该文件的内容:

DATA_BASIC_ORDER     RCDATA Data\Data_BasicOrder.txt

只有在我构建IDE时才会发生这种情况。我能够在命令行上成功构建一个.RES文件,并在十六进制编辑器中打开它显示资源名称和文本文件的内容,但如果我用{{1}链接它}指令,资源不会出现在EXE中。我用ResHacker验证了它;资源就不存在了。所以有些事情很奇怪。

我尝试过关闭并重新启动IDE。没变。我还在十六进制编辑器中打开了{$R}文件,以确保没有任何奇怪的字符搞乱,但不是,它是一个普通的ANSI文本文件。

有没有人知道这是怎么回事以及如何解决它?

编辑:它不断变得怪异。如果我将文件行完全留空,我仍然会得到同样的错误。但是,如果我从项目中删除该文件(从项目资源管理器中的列表中删除它),则该错误信息会消失,但它仍未显示在构建中。

3 个答案:

答案 0 :(得分:1)

反斜杠看起来很可疑。试着引用它:

RCDATA Data\\Data_BasicOrder.txt

答案 1 :(得分:0)

如错误消息所示,您的问题的答案可能在编译器调用BRCC32.exe工具的命令行中可见。

我在尝试在编译器配置中添加一些额外的“条件定义”时遇到了此错误。我怀疑传递给brcc32的条件定义的数量和长度(和/或下划线的数量)也有限制(显然使用-d参数)

答案 2 :(得分:0)

我有相同的错误消息,即使问题出在条件定义之一中,它仍然指向 MyResource.rc 。不知何故,两个不同的定义以逗号分隔在同一行上。 PHNOCODE,DECODE 更正“定义”之后,我的项目将正确构建。