C ++资源文件ProductVersion显示变量名而不是变量值

斯科切·拉塞里克

我正在尝试设置程序的版本,因此我可以在每次构建时对其进行递增,但是在为设置版本时遇到了一些麻烦.exe

这是我的 BuildVersion.h

#define STRINGIZE(s) #s

#define VER_MAJOR_VERSION   6
#define VER_MINOR_VERSION   7
#define VER_HOTFIX_VERSION  0
#define VER_BUILD_NUMBER    999

#define VER_FILE_VERSION    VER_MAJOR_VERSION, VER_MINOR_VERSION, VER_HOTFIX_VERSION, VER_BUILD_NUMBER
#define VER_FILE_VERSION_STR    STRINGIZE(VER_MAJOR_VERSION)    \
"." STRINGIZE(VER_MINOR_VERSION)    \
"." STRINGIZE(VER_HOTFIX_VERSION)   \
"." STRINGIZE(VER_BUILD_NUMBER) \

#define VER_PRODUCT_VERSION         VER_FILE_VERSION
#define VER_PRODUCT_VERSION_STR     VER_FILE_VERSION_STR

这是我.rc文件的版本部分

/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION VER_FILE_VERSION
 PRODUCTVERSION VER_PRODUCT_VERSION
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x0L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "CompanyName", "My Company"
            VALUE "FileDescription", "My Description"
            VALUE "FileVersion", VER_FILE_VERSION_STR "\0"
            VALUE "InternalName", "MyProgram.exe"
            VALUE "LegalCopyright", "© 2019 My copyright"
            VALUE "OriginalFilename", "MyProgram.exe"
            VALUE "ProductName", "My Program"
            VALUE "ProductVersion", VER_PRODUCT_VERSION_STR "\0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END

但是,这就是我的.exe媒体资源中显示的内容

物产

如您所见,产品版本显示为VER_MAJOR_VERSION.VER_MINOR_VERSION.VER_HOTFIX_VERSION.VER_BUILD_NUMBER,而不是预期的整数,例如文件版本。它使用变量名而不是变量值。

我尝试分别设置PRODUCTVERSION"ProductVersion"使用VER_FILE_VERSIONVER_FILE_VERSION_STR,而不是使用它们自己的单独PRODUCT_VERSION变量,但是发生了相同的事情。

使用Visual Studio 2017,Windows SDK 10.0.15063.0

雷米·勒博

您不是对宏进行字符串化,而是对宏的名称进行字符串化在对宏结果进行字符串化之前,您需要进行额外的处理才能评估宏,例如:

#define STRINGIZE_(s) #s
#define STRINGIZE(s) STRINGIZE_(s)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章