簡體   English   中英

使用RC.EXE或BRCC32.EXE構建* .rc文件包含文件的行為不同

[英]Include file behave differently using RC.EXE or BRCC32.EXE to build *.rc files

我希望在我的Delphi項目的RC文件中使用dot(。)作為資源條目。 但是,Delphi的BRCC32.exe不允許在資源命名中使用點(。)。 自Delphi 2010以來,我們可以在中指定“要使用的資源編譯器”

Project | Option | Resource Compiler 

切換到命名中支持點的RC.exe(Windows SDK資源編譯器)。

使用RC.exe作為資源編譯器適用於我想要的點命名。 但是,我在rc文件中使用#include時遇到問題。

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

#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"

和system.db.excludes.rc文件:

#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"

編譯Delphi項目產量:

[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

如果使用RC.exe,會出現上述問題。 如果我使用BRCC32.exe,它沒有任何問題。

此問題是由於app.db.excludes.rc和system.db.excludes.rc不在同一文件夾中。

如果我將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工作?

您可以嘗試使用RC/I選項來指定XML文件所在的目錄。 您必須運行RC作為預構建操作,以便對其執行環境進行大量控制。

而不是使用#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     8000  "HR.BRANCH.DSC.xml"
HR_CALENDAR_DSC   8000  "HR.CALENDAR.DSC.xml"
HR_CATEGORY_DSC   8000  "HR.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.exeCGRC.exe / RC.exe

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM