[英]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.exe和CGRC.exe / RC.exe 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.