在我的项目中,我有一个包含文件“buildversion.h”,其中包含versionnumber的定义。 为了使它更容易管理,我做了一些预处理器“魔术”
问题是,Visual Studio资源文件编辑器的行为与普通编译器不同,所以我得到“错误”的信息
我的标题文件:
#define MAJOR_VER_NUM 2
#define MINOR_VER_NUM 3
#define REV_NUM 9999
#define STR(x) #x // helper defines
#define XSTR(x) STR(x) // helper defines
#define XXX_FILE_VERSION MAJOR_VER_NUM,MINOR_VER_NUM,REV_NUM,0
#define XXX_PRODUCT_VERSION MAJOR_VER_NUM,MINOR_VER_NUM,REV_NUM,0
#define XX_FILE_VERSION_STRING XSTR(MAJOR_VER_NUM)", "XSTR(MINOR_VER_NUM)", "XSTR(REV_NUM)", 0"
#define ICOS_PRODUCT_VERSION_STRING XSTR(MAJOR_VER_NUM)", "XSTR(MINOR_VER_NUM)", "XSTR(REV_NUM)", 0"
int const MajorVersionNumber = MAJOR_VER_NUM;
int const MinorVersionNumber = MINOR_VER_NUM;
int const RevisionNumber = REV_NUM;
在我的“main.rc”文件中,我包含上面的标题,在我编写的版本块中
VALUE "FileVersion", XXX_FILE_VERSION_STRING
此条目的结果是:
2“,”3“,”9999“,0
如果我在普通的c ++代码中使用上面的头文件,那么替换工作正常,我得到了
2,3,9999,0
正如所料。
有没有办法在资源文件中使这个工作?
答案 0 :(得分:2)
这是适用于我的代码,替换为使用与您相同的宏名称。
按原样保留您的版本号和str帮助程序,然后:
#define XXX_FILE_VERSION_DOT MAJOR_VER_NUM.MINOR_VER_NUM.REV_NUM.0
#define XXX_FILE_VERSION_COMMA MAJOR_VER_NUM,MINOR_VER_NUM,REV_NUM,0
#define XXX_FILE_VERSION_DOT_STR XSTR(XXX_FILE_VERSION_DOT)
#define XXX_FILE_VERSION_COMMA_STR XSTR(XXX_FILE_VERSION_COMMA)
然后在.rc中,我发现你需要在FILEVERSION
部分使用逗号形式,如下所示:
FILEVERSION XXX_FILE_VERSION_COMMA
稍后在StringFileInfo
块中,您使用点缀字符串格式版本,如下所示:
VALUE "FileVersion", XXX_FILE_VERSION_DOT_STR