是否有一些預處理關鍵字用於在編譯時訪問我的.rc文件中定義的FILEVERSION?從Visual C++資源文件獲取FILEVERSION
我真的不想添加額外的代碼來從編譯後的產品本身讀取文件信息。
是否有一些預處理關鍵字用於在編譯時訪問我的.rc文件中定義的FILEVERSION?從Visual C++資源文件獲取FILEVERSION
我真的不想添加額外的代碼來從編譯後的產品本身讀取文件信息。
預處理器也在.RC文件上運行。在.RC和源代碼包含的標題中定義共享數據。
即foo.h中:
#define MY_PRODUCT_NAME Foo
然後在foo.rc:
#include "foo.h"
VS_VERSION_INFO VERSIONINFO
// Many lines omitted
VALUE "ProductName", MY_PRODUCT_NAME
然後在Foo.cpp中:
#include "foo.h"
cout << MY_PRODUCT_NAME;
我解決這個問題很簡單並且運行良好,並且不會被資源編輯器刪除。 1.將整個VS_VERSION_INFO節移到.RC2文件中。 2.將所有版本號和字符串替換爲您在新版本.h文件中定義的值。 3.將#include「version.h」添加到您的.RC2文件。 現在,您還可以在其他.CPP文件中包含version.h,並在代碼中使用#define值,例如在對話框中顯示應用程序的版本資源。
微軟也建議這個解決方案(雖然它不是很容易谷歌):http://support.microsoft.com/kb/237870/en-us – Steed 2013-03-05 11:28:20
好主意,但在RC文件中它有一個字符串信息塊,它也具有版本信息(以稍微不同的格式)。任何方式來簡單地訪問RC文件的值,而不是重新定義它們並將它們保存在一個共同的地方? – known 2009-10-02 01:18:01
沒有我知道的 - rc.exe獨立於cl.exe。 – Michael 2009-10-02 01:26:21
當您更改對話框或您正在處理的任何內容時,會生成新的.rc文件並覆蓋舊的.rc文件。所以這個'#include「foo.h」'不會再存在了。這不是一個好的解決方案。 – LihO 2012-02-02 08:31:54