3

Delphi プロジェクトの RC ファイルのリソース エントリとしてドット (.) を使用したいと考えています。ただし、Delphi の BRCC32.exe では、リソースの名前にドット (.) を使用できません。Delphi 2010 以降、「使用するリソース コンパイラ」を

Project | Option | Resource Compiler 

ネーミングでドットをサポートする RC.exe (Windows SDK Resource Compiler) に切り替えます。

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 として機能させる方法を知っている人はいますか?

4

2 に答える 2

3

RC/Iのオプションを試して、XML ファイルが存在するディレクトリを指定できます。RC の実行環境を十分に制御するには、ビルド前のアクションとして RC を実行する必要があります。

于 2010-12-27T11:13:47.750 に答える
0

#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の両方で機能します。

于 2010-12-28T03:16:26.463 に答える