2009-10-02 3 views

Répondre

8

Le préprocesseur s'exécute également sur le fichier .RC. Définissez les données partagées dans un en-tête inclus par le .RC et votre code source.

-à-dire, en foo.h:

#define MY_PRODUCT_NAME Foo 

Ensuite, dans le foo.rc:

#include "foo.h" 

VS_VERSION_INFO VERSIONINFO 
    // Many lines omitted 
    VALUE "ProductName", MY_PRODUCT_NAME 

Puis, en foo.cpp:

#include "foo.h" 

cout << MY_PRODUCT_NAME; 
+0

Bonne idée, mais dans le fichier RC, il y a un bloc d'informations qui contient également les informations de version (dans un format légèrement différent). Un moyen d'accéder simplement aux valeurs du fichier RC plutôt que de les redéfinir et de les conserver dans un endroit commun? – known

+0

Aucun que je connaisse - rc.exe est indépendant de cl.exe. – Michael

+0

Lorsque vous modifiez le dialogue ou quoi que vous travailliez, le nouveau fichier .rc est généré et l'ancien est remplacé. Donc, ce '#include" foo.h "' ne sera plus là. Ce n'est pas une bonne solution. – LihO

2

Ma solution à ce problème est simple et fonctionne bien et n'est pas effacé par l'éditeur de ressources. 1. Déplacez toute la section VS_VERSION_INFO dans votre fichier .RC2. 2. Remplacez tous les numéros de version et toutes les chaînes par des valeurs #define dans un nouveau fichier version.h. 3. Ajoutez #include "version.h" à votre fichier .RC2. Vous pouvez maintenant inclure version.h dans d'autres fichiers .CPP et utiliser les valeurs #define dans votre code, par exemple pour afficher les ressources de version de l'application dans une boîte de dialogue.

+1

Microsoft suggère cette solution aussi (même si ce n'est pas très facile à google): http://support.microsoft.com/kb/237870/fr – Steed

Questions connexes