2

私は以前の質問に基づいてビルド構成を作成しています。 Build Configurationsを作成しました。custom.hという名前のファイルに異なるビルドの条件付き宣言があります。これは、現在、次のようになります。 .hファイルの値が.rcファイルに定義されていません

#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コマンドを追加しました:

#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のために含まれています努力。私はエラーerror RC2104 : undefined keyword or key name: STRDESCRIPTIONを取得し、このプロジェクトをコンパイルしようとすると

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

:その含まれた後、.RCファイルの関連部分は(再び、簡潔にするために編集さビット)このようになります。私は少し迷っています。値は存在し、設定した直後にログに記録でき、#undefコマンドがありません。

- 編集済み -

を私が追加した場合、私の問題は、条件付きの定義に関連していると思われるので、プロジェクトがコンパイルされますが、値が表示されないブロックする場合、プレースホルダは外で定義されています。現時点で最も混乱しているのは、#pragma messageコマンドを条件ブロック内に置くことができ、正しく実行されたことですが、そこに定義されている値は存在しません。誰かが私にとってこれに光を当てることができると願っています。

+0

通常、私は誤植と思われます。 – Joshua

+0

私は最近、可能性のあるファイルを生成していました。しかし、ファイルの関連部分はかなりの時間のうちに変更されていません。変更されたファイルは 'custom.h'だけで、Build ConfigurationsのPreprocessorセクションで定義された変数をチェックしていました。 'versionconfig.h'と' .rc'ファイルは変更されていません。 –

答えて

3

私はそれを見つけました。 Visual Studioでは、リソースファイルのプリプロセッサ定義をプロジェクトとは別に設定する必要があります。リソースのプリプロセッサセクションにELITE_BUILDを追加するとすぐに、すべてが期待通りに機能しました。

関連する問題