2

我正在根據以前的問題創建構建配置。我已經創建了構建配置,並且我爲名爲custom.h的文件中的不同構建提供了條件聲明。目前,它看起來像這樣:.rc文件中的值未在.rc文件中定義

#pragma once 

#if defined(ELITE_BUILD) 
    #define BUILD 3 // 1: personal, 2: select, 3: elite 
#elif defined(SELECT_BUILD) 
    #define BUILD 2 
#elif defined(PERSONAL_BUILD) 
    #define BUILD 1 
#endif 

在我的.rc文件中的一個有一個包括versionconfig.h看起來像這樣(有點刪節):

#if BUILD == 1 
#define STRDESCRIPTION "Personal Edition" 
#elif BUILD == 2 
#define STRDESCRIPTION "Select Edition" 
#elif BUILD == 3 
#define STRDESCRIPTION "Elite Edition" 
#pragma message(STRDESCRIPTION) 
#endif 

我加入了#pragma命令作爲記錄努力。包括後,rc文件中的相關部分看起來像這樣(再次,節錄爲了簡潔一點):

BEGIN 
    BLOCK "StringFileInfo" 
    BEGIN 
     BLOCK "040904b0" 
     BEGIN 
      VALUE "FileDescription", STRDESCRIPTION 
     END 
    END 
END 

當我嘗試編譯這個項目,我得到的錯誤error RC2104 : undefined keyword or key name: STRDESCRIPTION。我有點不知所措。該值存在,我可以在設置後立即記錄它,並且沒有#undef命令。

- 編輯 -

如果我添加佔位符定義外,如果地塊項目將編譯,但值顯示不出來,所以我的問題似乎與有條件的定義。這裏最讓我困惑的是,我可以在條件塊中放入一個#pragma message命令並且它的執行正確,但是那裏定義的值是不存在的。希望有人能爲我闡明這一點。

+0

通常我會懷疑錯字。 – Joshua 2012-02-14 21:23:33

+0

如果我最近生成了可能的文件。但是,文件的相關部分在一段時間內並沒有改變。唯一修改過的文件是'custom.h',並且要檢查構建配置的預處理器部分中定義的變量。 'versionconfig.h'和'.rc'文件沒有被修改。 – 2012-02-14 21:27:17

回答

3

我找到了。在Visual Studio中,您必須爲項目單獨設置資源文件的預處理器定義。只要我將ELITE_BUILD添加到資源的預處理器部分,一切都按預期工作。

相關問題