2011-02-26 84 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 
-------------------------------- 
  • 保存資源腳本文件和編譯在不同的平臺上的項目。