我想确保一个人不能混淆我的DLL文件的64位和32位版本。这就是我在项目属性中定义了以下预处理器常量的原因:
在我的.rc
文件中,我有以下几行:
#ifdef x64
#define MY_PRODUCT_NAME = "My file 64bit"
#else
#define MY_PRODUCT_NAME = "My file 32bit"
#endif
我想在下面的资源块中使用这些常量:
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "000904b0"
BEGIN
VALUE "CompanyName", "SOMENAME"
VALUE "FileDescription", "WHAT THIS FILE IS"
VALUE "FileVersion", "1.0.0.1"
VALUE "InternalName", "file.dll"
VALUE "LegalCopyright", "Don't sell it pls"
VALUE "ProductName", MY_PRODUCT_NAME
END
在包含MY_PRODUCT_NAME
的行上,我收到此编译器错误:
1>
1>StopThat.rc(58): error RC2133: unexpected value in value data
1>
1>
1>StopThat.rc(58): error RC2132: expected VALUE, BLOCK, or END keyword
1>
这让我很生气,因为那是 exactly what microsoft does in their documentation 。
我做错了吗?我猜我是,所以它是什么?
答案 0 :(得分:1)
假设您发布的代码与您尝试编译的代码完全相同,我会说您可能是两个END语句而不是完全作用域,我也从未在#define语句中看到过等号
可以肯定的是,当资源文件出现时我不是专家。
答案 1 :(得分:1)
因为您在宏定义中使用了赋值运算符,所以删除" ="来自您的定义:
#ifdef x64
#define MY_PRODUCT_NAME "My file 64bit"
#else
#define MY_PRODUCT_NAME "My file 32bit"
#endif