2009-10-02 8 views
8

Gibt es einige Präprozessorschlüsselwörter, die für den Zugriff auf die Datei FILEVERSION verwendet werden, die in meiner RC-Datei zur Kompilierzeit definiert ist?FILEVERSION aus Visual C++ - Ressourcendatei abrufen

Ich möchte nicht wirklich zusätzlichen Code hinzufügen, um die Dateiinformationen aus dem kompilierten Produkt selbst zu lesen.

Antwort

8

Der Präprozessor wird auch in der RC-Datei ausgeführt. Definieren Sie die gemeinsam genutzten Daten in einem Header, der sowohl in der .RC-Datei als auch in Ihrem Quellcode enthalten ist.

dh in foo.h:

#define MY_PRODUCT_NAME Foo 

Dann in der foo.rc:

#include "foo.h" 

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

Dann in foo.cpp:

#include "foo.h" 

cout << MY_PRODUCT_NAME; 
+0

Gute Idee, aber in der RC-Datei hat es einen String Informationsblock, der auch die Versionsinformationen hat (in einem etwas anderen Format). Sie können einfach auf die RC-Dateiwerte zugreifen, anstatt sie neu zu definieren und an einem gemeinsamen Ort zu behalten. – known

+0

Keine, die ich kenne - rc.exe ist unabhängig von cl.exe. – Michael

+0

Wenn Sie den Dialog oder das, woran Sie arbeiten, ändern, wird eine neue RC-Datei generiert und die alte überschrieben. Also wird dieses '#include" foo.h "' nicht mehr da sein. Das ist keine gute Lösung. – LihO

2

Meine Lösung für dieses Problem ist einfach und funktioniert gut und wird nicht vom Ressourceneditor ausgelöscht. 1. Verschieben Sie den gesamten Abschnitt VS_VERSION_INFO in Ihre .RC2-Datei. 2. Ersetzen Sie alle Versionsnummern und Zeichenfolgen durch Werte, die Sie in einer neuen version.h-Datei definieren. 3. Fügen Sie #include "version.h" zu Ihrer .RC2-Datei hinzu. Jetzt können Sie auch version.h in andere .CPP-Dateien einschließen und die #define-Werte in Ihrem Code verwenden, um beispielsweise die Versionsressourcen der App in einem Dialogfeld anzuzeigen.

+1

Microsoft schlägt diese Lösung auch vor (obwohl es nicht sehr einfach ist, zu googeln): http://support.microsoft.com/kb/237870/en-us – Steed

Verwandte Themen