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添加到资源的预处理器部分,一切都按预期工作。

相关问题