天天看點

Visual Studio 2008 配合 WxWidgets

一、下載下傳并解壓縮wxWidgets

  1. 到 http://www.wxwidgets.org/downloads 下載下傳一個wxMSW版本的wxWidgets。(wxMSW是專門針對Windows系統)

  PS:這裡推薦解壓縮版:http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.8.10.zip

  2. 把下載下傳的wxMSW-2.8.10.zip解壓縮到C槽。(wxWidgets的安裝路徑最好不要出現空格和中文)

  例如:C:\wxMSW-2.8.10

二、編譯wxWidgets

  1. 進入“C:\wxMSW-2.8.10\build\msw”目錄。用VS2008打開wx.dsw,提示是否進行項目轉換,點确定。

  2. 編譯Debug版本的庫:右擊《解決方案->配置管理器->活動解決方案配置->Unicode Debug》。然後右擊《解決方案->生成解決方案》,等一會兒就可以編譯出Debug版本的wxWidgets庫了。

  

Visual Studio 2008 配合 WxWidgets

  3. 編譯Relase版本的庫:Release版本的wxWidgets庫雖然也可以通過類似的方法去編譯,但編譯出來的庫仍然依賴于visual studio 2008的運作時庫。Debug版本的庫依賴VS2008也就算了,反正是自己調試用的。Release版本可是要給别人用的,再帶上一大堆dll就不好了。為了解決這個問題,我們需要先(解決方案->配置管理器->活動解決方案配置->Unicode Release),然後在解決方案資料總管中,針對每一個項目右擊《屬性->配置屬性->C/C++ ->代碼生成->運作時庫: 多線程(/MT)》(HOHO, 有20個項目要改屬性啊~~~)。最後再右擊《解決方案->生成解決方案》就可以了。

  編譯好後的wxWidgets會在C:\wxMSW-2.8.10\lib\vc_lib目錄下生成一系列的lib檔案,這些lib檔案的名字遵循下面的命 名規則:不依賴于GUI元件的庫會以"wxbase"開頭,緊跟着的是版本号,然後的字母表明這個庫是否是編譯為Unicode('u')或是否是編譯為 Debug('d'),名字中的最後部分是wxWidgets元件的名字。

  注意:wxWidgets編譯完後在C:\wxMSW-2.8.10\build\msw目錄下會生成許多預編譯頭檔案,占了很大的空間,如果确定以後不再編譯 wxWidgets庫的話,可以考慮删掉。

三、配置VS2008

  1. 打開工具 -> 選項 -> 項目和解決方案 -> VC++目錄 -> 顯示以下内容的目錄

  2. 在“包含檔案”中加入“C:\wxMSW-2.8.10\include”和“C:\wxMSW-2.8.10\include\msvc”

  3. 在“庫檔案” 中加入“C:\wxMSW-2.8.10\lib\vc_lib”

四、建立wxWidgets項目

  建立一個空項目。然後設定項目的一些屬性,可以選擇下面的其中一個來設定。譬如你如果打算使用Unicode,那麼選擇Unicode Debug或Unicode Release,如果你僅僅想調試程式而非釋出,則隻需要選擇Debug設定。

  Debug:

  項目->屬性->配置屬性->正常 -> 字元集: 未設定

  項目->屬性->配置屬性->C/C++ -> 代碼生成 ->運作時庫: 多線程調試(/MTd)

  項目->屬性->配置屬性->連結器 -> 輸入 -> 附加依賴項: wxbase28d.lib wxmsw28d_core.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib

  Release:

  項目->屬性->配置屬性->正常->字元集: 未設定

  項目->屬性->配置屬性->C/C++ ->代碼生成->運作時庫: 多線程(/MT)

  項目->屬性->配置屬性->連結器->輸入->附加依賴項: wxbase28.lib wxmsw28_core.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib

  Unicode Debug:

  項目->屬性 -> 配置屬性 -> 正常 -> 字元集: 使用 Unicode 字元集

  項目->屬性 -> 配置屬性 -> C/C++ -> 代碼生成 ->運作時庫: 多線程調試(/MTd)

  項目->屬性 -> 配置屬性 -> 連結器 -> 輸入 -> 附加依賴項: wxbase28ud.lib wxmsw28ud_core.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib

  Unicode Release:

  項目->屬性 -> 配置屬性 -> 正常 -> 字元集: 使用 Unicode 字元集

  項目->屬性 -> 配置屬性 -> C/C++ -> 代碼生成 ->運作時庫: 多線程(/MT)

  項目->屬性 -> 配置屬性 -> 連結器 -> 輸入 -> 附加依賴項: wxbase28u.lib wxmsw28u_core.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib oleacc.lib

這些靜态連結庫都是一些可能會使用到的 Windows 系統的庫,根據需要增減,比如我從來不用odbc,就不需要在這裡添加 odbc32.lib。而 wxWidgets 的靜态庫會自動添加到工程中,不需要在這裡設定,在 %WXPATH%\include\msvc\wx\setup.h 檔案中可以看到加載這些庫的代碼。

編譯成依賴 DLL 的執行檔案還需要加上預處理指令 WXUSINGDLL

用 UNICODE 編譯則需要加上預處理指令 _UNICODE

還有一種 Universal 編譯,要加上預處理指令 __WXUNIVERSAL__

這樣一個普通的 wxWdigets 項目就設定好了。

複制以下代碼添加到你的CPP檔案中,進行編譯,測試,OK!

代碼

繼續閱讀