使用RC.EXE或BRCC32.EXE,包含文件的行为不同,以构建* .rc文件 [英] Include file behave differently using RC.EXE or BRCC32.EXE to build *.rc files

查看:261
本文介绍了使用RC.EXE或BRCC32.EXE,包含文件的行为不同,以构建* .rc文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望在我的Delphi项目的RC文件中使用dot(。)作为资源条目。但是,Delphi的BRCC32.exe在资源命名中不允许使用dot(。)。自Delphi 2010以来,我们可以在

 项目中指定使用资源编译器选项|资源编译器

切换到支持点命名的RC.exe(Windows SDK资源编译器) / p>

使用RC.exe作为资源编译器,可以为点号命名。但是,我在rc文件中遇到使用#include的问题。



我有一个app.db.excludes.rc文件如下:

  #include../../../../core/resource/db/excludes/system.db.excludes.rc

HR_BRANCH_DSC 8000HR.BRANCH.DSC.xml
HR_CALENDAR_DSC 8000HR.CALENDAR.DSC.xml
HR_CATEGORY_DSC 8000HR.CATEGORY.DSC.xml

和system.db.excludes.rc文件:

  #include../../system.h

SYSTEM_GROUPS_DSC 8000SYSTEM.GROUPS.DSC.xml
SYSTEM_SCRIPT_DSC 8000 SYSTEM.SCRIPT.DSC.xml
SYSTEM_USER_DSC 8000SYSTEM.USER.DSC.xml

编译Delphi项目单位:

  [BRCC32错误] payroll.db.excludes.rc(3):找不到文件:SYSTEM.GROUPS.DSC.xml 
[BRCC32错误] payroll.db.excludes.rc(4):找不到文件:SYSTEM.SCRIPT.DSC.xml
[BRCC32错误] payroll.db。 excludes.rc(5):找不到文件:SYSTEM .USER.DSC.xml

如果使用RC.exe,则会出现上述问题。如果我使用BRCC32.exe,它的工作没有任何问题。



这个问题是由于app.db.excludes.rc和system.db.excludes.rc isn' t保持在同一个文件夹。



如果我将system.db.excludes.rc更改为

  #include../../system.h

SYSTEM_GROUPS_DSC 8000../../../../core/resource/db/excludes/ SYSTEM.GROUPS.DSC.xml
SYSTEM_SCRIPT_DSC 8000../../../../core/resource/db/excludes/SYSTEM.SCRIPT.DSC.xml
SYSTEM_USER_DSC 8000 ../../../../core/resource/db/excludes/SYSTEM.USER.DSC.xml

然后RC.exe会被成功编译。



有没有人有任何想法,如何使RC.exe作为BRCC32.EXE,当解释包含以上文件?

解决方案

而不是使用#include嵌入rc文件:

  #include../../../../core/resource/db/excludes/system.db.excludes.rc

移动使用#include并将system.db.excludes.rc添加到我的Delphi项目(.dproj)中。



修补的app.db.excludes。 rc是:

  HR_BRANCH_DSC 8000HR.BRANCH.DSC.xml
HR_CALENDAR_DSC 8000HR.CALENDAR。 DSC.xml
HR_CATEGORY_DSC 8000HR.CATEGORY.DSC.xml

而我的Delphi包文件(.dpk)如下:

  package resource.db; 

{$ R * .res}
{$ R'payroll.db.excludes.res'}
{$ ALIGN 8}
{$ ASSERTIONS ON}
{$ BOOLEVAL OFF}
{$ DEBUGINFO ON}
{$ EXTENDEDSYNTAX ON}
{$ IMPORTEDDATA ON}
{$ IOCHECKS ON}
。 ...

手动将资源条目添加到.dpk文件中:

  {$ R'payroll.db.excludes.res'} 

此方法适用于 BRCC32.exe CGRC.exe / RC.exe


I wish to using dot (.) as resource entry in RC files for my Delphi project. However, Delphi's BRCC32.exe doesn't allow dot (.) in resource naming. Since Delphi 2010, we may specify "Resource Compiler to use" in

Project | Option | Resource Compiler 

to switch to RC.exe (Windows SDK Resource Compiler) that support dot in naming.

Using RC.exe as resource compiler works for dot naming I want. However, I encounter a problem using #include in the rc file.

I have a app.db.excludes.rc file is as follow:

#include "../../../../core/resource/db/excludes/system.db.excludes.rc"

HR_BRANCH_DSC     8000  "HR.BRANCH.DSC.xml"
HR_CALENDAR_DSC   8000  "HR.CALENDAR.DSC.xml"
HR_CATEGORY_DSC   8000  "HR.CATEGORY.DSC.xml"

And system.db.excludes.rc file:

#include "../../system.h"

SYSTEM_GROUPS_DSC   8000  "SYSTEM.GROUPS.DSC.xml"
SYSTEM_SCRIPT_DSC   8000  "SYSTEM.SCRIPT.DSC.xml"
SYSTEM_USER_DSC     8000  "SYSTEM.USER.DSC.xml"

Compile the Delphi project yields:

[BRCC32 Error] payroll.db.excludes.rc(3): file not found: SYSTEM.GROUPS.DSC.xml
[BRCC32 Error] payroll.db.excludes.rc(4): file not found: SYSTEM.SCRIPT.DSC.xml
[BRCC32 Error] payroll.db.excludes.rc(5): file not found: SYSTEM.USER.DSC.xml

The above problem occurs if using RC.exe. It works without any problems if I use BRCC32.exe.

This problem is due to both app.db.excludes.rc and system.db.excludes.rc isn't keep in same folder.

If I change system.db.excludes.rc to

#include "../../system.h"

SYSTEM_GROUPS_DSC   8000  "../../../../core/resource/db/excludes/SYSTEM.GROUPS.DSC.xml"
SYSTEM_SCRIPT_DSC   8000  "../../../../core/resource/db/excludes/SYSTEM.SCRIPT.DSC.xml"
SYSTEM_USER_DSC     8000  "../../../../core/resource/db/excludes/SYSTEM.USER.DSC.xml"

The RC.exe will then compile successfully.

Does anyone has any ideas how to make RC.exe works as BRCC32.EXE when interpret the include files as above?

解决方案

Instead of using #include to embed a rc file:

#include "../../../../core/resource/db/excludes/system.db.excludes.rc"

I remove the usage of #include and add "system.db.excludes.rc" into my Delphi project (.dproj).

The patched "app.db.excludes.rc" is:

HR_BRANCH_DSC     8000  "HR.BRANCH.DSC.xml"
HR_CALENDAR_DSC   8000  "HR.CALENDAR.DSC.xml"
HR_CATEGORY_DSC   8000  "HR.CATEGORY.DSC.xml"

And my Delphi package file (.dpk) is as follow:

package resource.db;

{$R *.res}
{$R 'payroll.db.excludes.res'}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
....

A resource entry should added to the .dpk file manually:

{$R 'payroll.db.excludes.res'}

This approach works for both BRCC32.exe and CGRC.exe / RC.exe.

这篇关于使用RC.EXE或BRCC32.EXE,包含文件的行为不同,以构建* .rc文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆