簡體   English   中英

在Code :: Blocks中構建一個wxWidgets程序

[英]Building a wxWidgets program in Code::Blocks

我正在嘗試使用Code :: Blocks 12.11構建這個wxWidgets示例程序,但無論我嘗試什么,構建都會失敗。

例如,構建日志顯示以下內容(項目位於X:\\ programming \\ c ++ \\ HelloWxWidgets下):

mingw32-g ++。exe -Wall -fexceptions -g -D_ GNUWIN32 _ -D_ WXMSW _ -DwxUSE_UNICODE -D_ WXDEBUG _ -IC :\\ libraries \\ wxWidgets-2.8.12.01 \\ include -IC:\\ libraries \\ wxWidgets-2.8.12.01 \\ contrib \\ include -IC:\\ libraries \\ wxWidgets-2.8.12.01 \\ lib \\ gcc_lib \\ mswud -c X:\\ programming \\ c ++ \\ HelloWxWidgets \\ hworld2.cpp -o obj \\ Debug2 \\ hworld2.o mingw32-g ++。exe -LC :\\ libraries \\ wxWidgets-2.8.12.01 \\ lib \\ gcc_lib -o bin \\ Debug2 \\ HelloWxWidgets.exe obj \\ Debug2 \\ hworld2.o -static-libgcc C:\\ libraries \\ wxWidgets-2.8.12.01 \\ lib \\ gcc_lib \\ libwxmsw28ud。 a C:\\ libraries \\ wxWidgets-2.8.12.01 \\ lib \\ gcc_lib \\ libwxmsw28ud.a(monolib_window.o):在函數ZN8wxWindow6UpdateEv': C:\\BuildAgent\\work\\wxPack\\wxwidgets\\build\\msw/../../src/msw/window.cpp:1643: undefined reference to GdiFlush @ 0'C:\\ libraries \\ wxWidgets-2.8.12.01 \\ lib \\ gcc_lib \\ libwxmsw28ud.a(monolib_window.o):在函數ZNK8wxWindow13GetTextExtentERK8wxStringPiS3_S3_S3_PK6wxFont': C:\\BuildAgent\\work\\wxPack\\wxwidgets\\build\\msw/../../src/msw/window.cpp:2132: undefined reference to GetTextExtentP的ZNK8wxWindow13GetTextExtentERK8wxStringPiS3_S3_S3_PK6wxFont': C:\\BuildAgent\\work\\wxPack\\wxwidgets\\build\\msw/../../src/msw/window.cpp:2132: undefined reference to oint32W @ 16'C:\\ BuildAgent \\ work \\ wxPack \\ wxwidgets \\ build \\ msw /../../ src / msw / window.cpp:2133:未定義引用`GetTextMetricsW @ 8'

這些是我得到的一些構建消息

C:\\ libraries \\ wxWidgets-2.8.12.01 \\ lib \\ gcc_lib \\ libwxmsw28ud.a(monolib_window.o)||在函數ZN8wxWindow6UpdateEv':| C:\\BuildAgent\\work\\wxPack\\wxwidgets\\build\\msw\\..\\..\\src\\msw\\window.cpp|1643|undefined reference to ZN8wxWindow6UpdateEv':| C:\\BuildAgent\\work\\wxPack\\wxwidgets\\build\\msw\\..\\..\\src\\msw\\window.cpp|1643|undefined reference to GdiFlush @ 0'| C:\\ libraries \\ wxWidgets-2.8.12.01 \\ lib \\ gcc_lib \\ libwxmsw28ud.a(monolib_window.o)||在函數ZNK8wxWindow13GetTextExtentERK8wxStringPiS3_S3_S3_PK6wxFont':| C:\\BuildAgent\\work\\wxPack\\wxwidgets\\build\\msw\\..\\..\\src\\msw\\window.cpp|2132|undefined reference to ZNK8wxWindow13GetTextExtentERK8wxStringPiS3_S3_S3_PK6wxFont':| C:\\BuildAgent\\work\\wxPack\\wxwidgets\\build\\msw\\..\\..\\src\\msw\\window.cpp|2132|undefined reference to GetTextExtentPoint32W @ 16'| C:\\ BuildAgent \\ work \\ wxPack \\ wxwidgets \\ build \\ msw .... \\ src \\ msw \\ window.cpp | 2133 |未定義引用`GetTextMetricsW @ 8'|

這是完整的構建日志和所有構建消息 (順便說一下,我沒有C:\\ BuildAgent目錄)

我使用的是wxPack 2.8.12 (安裝在C:\\ libraries \\ wxWidgets-2.8.12.01)和GCC 4.7.2(使用mingw-get與C :: \\ mingw中的Code :: Blocks分開安裝)

以下是Code :: Blocks中的構建選項

謝謝你的幫助:)

好吧,我終於設法讓它工作:)

如果像我一樣,有人想在Code :: Blocks下的(最初)控制台項目中使用wxWidgets,那么我在這里發布要遵循的過程。 有了這個,任何人都應該能夠在Wind0ws環境中構建/運行至少這個示例代碼

  1. 我假設Code :: Blocks和MinGW設置正確。
  2. http://www.wxwidgets.org/downloads/下載/安裝wxMSW(在我的情況下,我下載了wxMSW-2.8.12-Setup.exe並將其安裝在C:\\ libraries \\ wxWidgets-2.8.12中)
  3. 打開命令提示符,需要構建wxWidgets,我將以使用unicode的靜態鏈接,單片調試構建為例( 此處有更多信息):

    cd /DC:\\libraries\\wxWidgets-2.8.12\\build\\msw

    mingw32-make -f makefile.gcc BUILD = debug SHARED = 0 MONOLITHIC = 1 UNICODE = 1

    :(mingw32-make需要一些時間來構建庫)

  4. 打開Code :: Blocks

  5. 創建一個新的控制台項目 ,或者如果您已經有一個控制台項目(並且您計划向其添加一個wxWidgets GUI),請將其打開
  6. 右鍵單擊項目>構建選項
  7. 以下是我用於Debug構建的構建選項 Code :: Blocks構建wxWidgets的選項
  8. 建立和運行

除了wx / wx.h之外,還應該包含[編輯] wx / app.h

#include <wx/wx.h>
#include <wx/app.h>

您可能需要將以下庫添加到鏈接器設置(我從VS 2012中獲取了列表,但對於GCC應該是相同的,您需要將-luuid -luser32 ....添加到鏈接器高級選項)

kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

UPD:可以看到taht chris建議添加gdi32 lib。 看起來對我合情合理。 至少缺少日志中缺少的功能

我發現一個最好的方法是在你的“其他班輪選項”中添加``wx-config --libs all`,在這個問題上,很多問題都會消失。

wxconfig屏幕截圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM