Visual studio .h文件中的值未在.rc文件中定义

Visual studio .h文件中的值未在.rc文件中定义,visual-studio,compiler-errors,conditional-compilation,rc,Visual Studio,Compiler Errors,Conditional Compilation,Rc,我正在根据前面的问题创建构建配置。我已经创建了构建配置,并且在一个名为custom.h的文件中为不同的构建创建了条件声明。目前看起来是这样的: #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) #

我正在根据前面的问题创建构建配置。我已经创建了构建配置,并且在一个名为custom.h的文件中为不同的构建创建了条件声明。目前看起来是这样的:

#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有一个include,看起来有点像是经过编辑的:

#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
当我试图编译这个项目时,我得到错误RC2104:undefined关键字或key name:STRDESCRIPTION。我有点不知所措。该值存在,我可以在设置后立即记录它,并且没有用于该值的undef命令

-编辑-


如果我在If块之外添加占位符定义,项目将编译,但没有显示值,因此我的问题似乎与条件定义有关。在这一点上,最让我困惑的是,我可以在条件块中放置一个pragma message命令,并且它被正确执行,但是在那里定义的值不存在。希望有人能帮我解释一下。

我找到了。在VisualStudio中,您必须为资源文件设置与项目分开的预处理器定义。当我将ELITE_BUILD添加到资源的预处理器部分时,一切都按预期工作。

我找到了它。在VisualStudio中,您必须为资源文件设置与项目分开的预处理器定义。一旦我将ELITE_BUILD添加到资源的预处理器部分,一切都按预期进行。

如果我最近生成了可能的文件。然而,文件的相关部分在相当长的一段时间内没有改变。唯一更改的文件是custom.h,它将检查在构建配置的预处理器部分中定义的变量。versionconfig.h和.rc文件尚未修改。如果我最近生成了这些文件,这可能是可能的。然而,文件的相关部分在相当长的一段时间内没有改变。唯一更改的文件是custom.h,它将检查在构建配置的预处理器部分中定义的变量。versionconfig.h和.rc文件尚未修改。