Inclure les fichiers à l'aide se comportent différemment RC.EXE ou BRCC32.EXE pour construire des fichiers * .rc
Question
Je tiens à utiliser le point (.) Comme entrée de ressources dans les fichiers RC pour mon projet Delphi. Cependant, BRCC32.EXE de Delphi ne permet pas le point (.) Dans la dénomination des ressources. Depuis Delphi 2010, nous pouvons spécifier « compilateur de ressources à l'utilisation » dans
Project | Option | Resource Compiler
pour passer à RC.exe (Windows SDK compilateur de ressources) que point d'appui dans la dénomination.
Utilisation RC.exe comme compilateur de ressources fonctionne pour point nommer que je veux. Cependant, je rencontre un problème en utilisant #include dans le fichier rc.
J'ai un fichier app.db.excludes.rc est comme suit:
#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"
Et fichier 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"
Compile les rendements du projet 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
Le problème ci-dessus se produit en cas d'utilisation RC.exe. Il fonctionne sans aucun problème si j'utilise BRCC32.EXE.
Ce problème est dû à la fois app.db.excludes.rc et system.db.excludes.rc est pas garder dans le même dossier.
Si je change 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"
Le RC.exe compilera avec succès.
Est-ce que quelqu'un a des idées sur la façon de faire fonctionne RC.exe comme BRCC32.EXE lorsque interprétons les fichiers à inclure comme ci-dessus?
La solution 2
Au lieu d'utiliser #include pour intégrer un fichier rc:
#include "../../../../core/resource/db/excludes/system.db.excludes.rc"
Je supprimer l'utilisation de #include et ajouter "system.db.excludes.rc" dans mon projet Delphi (.dproj).
Le patché "app.db.excludes.rc" est:
HR_BRANCH_DSC 8000 "HR.BRANCH.DSC.xml"
HR_CALENDAR_DSC 8000 "HR.CALENDAR.DSC.xml"
HR_CATEGORY_DSC 8000 "HR.CATEGORY.DSC.xml"
Et mon fichier de package Delphi (.dpk) est comme suit:
package resource.db;
{$R *.res}
{$R 'payroll.db.excludes.res'}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
....
Une entrée de ressources devrait ajouter au fichier .dpk manuellement:
{$R 'payroll.db.excludes.res'}
Cette approche fonctionne à la fois BRCC32.EXE et CGRC.exe / RC.exe .
Autres conseils
Vous pouvez essayer l'option de /I
RC pour spécifier le répertoire dans lequel vos fichiers XML en direct. Il faudrait lancer RC comme une action de pré-construction afin d'obtenir ce contrôle sur son environnement d'exécution.