2011-02-26 87 views
1

我在Visual Studio中编写了几个C++库。我知道我可以使用版本资源为DLL的版本,产品名称等等分配,但是有没有一种方法可以根据我的配置设置交换不同的资源脚本。例如,假设我正在为x86编译,我希望产品名称为x86,对于x64我同样希望产品名称为x64。多版本资源

回答

0

您可以在资源文件中使用#ifdef。但直接在资源文件中使用#ifdef,有时可能会与IDE的资源编辑器一起使用(它在Visual Studio 2008中发生过)。因此,我将创建两个资源文件(例如资源x86.rc和资源x64.rc),并将它们包括在主RC文件是这样的:

#ifdef X86 
#include "resource-x86.rc" 
#elif X64 
#include "resource-x64.rc" 
#else 
#error Unsupported platform! 
#endif 
+0

我们对产品名称等使用#define,它对我们来说工作正常。当然,我们不会在配置之间更改这些设置,但我不明白为什么不能。 – Luke 2011-02-27 02:18:00

+0

我最终用#ifdefs修改了RC。由于该文件不会经常更改,我认为这是一个更简单的解决方案。 Visual Studio似乎没有抱怨。显然,我必须做的一件事是将预处理器定义添加到项目属性的资源部分,然后一切正常。 – Dave 2011-02-27 11:34:06

0

here

复制 -

  1. 在Visual Studio中打开项目

  2. 右键单击资源脚本文件(如app.rc),并选择 “属性”

  3. 在属性页的顶部,选择一个平台,如“Win32”或“x64”。

  4. 在左侧菜单栏中,选择[配置属性]/[资源]/[常规]。

  5. 在“预处理器定义”字段中,为“Win32”平台添加“WIN32”,为“x64”平台添加“WIN64”。字段值将变成“WINXX; _UNICODE; UNICODE”。 (XX将为32或64)

  6. 单击确定关闭窗口。

  7. 右键单击资源脚本文件(例如app.rc)并选择“查看代码”。

  8. 在代码编辑器中,添加#ifdef和#elif以在编译时有条件地包含资源。使用刚刚定义的“WIN32”和“WIN64”预处理器定义。

下面是一个示例代码:

-------------------------------- 
#ifdef WIN32 
    IDB_BITMAP1    BITMAP     "bitmap1.bmp" 
    IDB_BITMAP2    BITMAP     "bitmap2.bmp" 
#elif WIN64 
    IDR_TOOLBAR1   BITMAP     "toolbar1.bmp" 
    IDI_ICON1    ICON     "icon1.ico" 
#endif 
-------------------------------- 
  • 保存资源脚本文件和编译在不同的平台上的项目。