天天看點

CodeBlock 20.03 + wxWidgets 3.1.5

一、CodeBlocks 20.03

1.去CodeBlocks官網下載下傳 codeblocks-20.03mingw-nosetup.zip

2.解壓到c:\codeblocks2003

3. Add C:\codeblocks2003\MinGW\bin\ 到系統的Path變量。l

二、.wxWidgets 3.1.5

1.如果不需要靜态連結wxWdigets庫,可以直接去wxWidgets官網下載下傳wxWidgets-3.1.5-headers.7z 與 wxMSW-3.1.5_gcc810_x64_Dev.7z 這2個檔案。

2.把wxWidgets-3.1.4-headers.7z 解壓到C:\Data\wxWidgets目錄裡。

注意:解壓後的目錄結構為C:\Data\wxWidgets\include

3.把wxMSW-3.1.4_gcc810_x64_Dev.7z解壓到C:\Data\wxWidgets目錄裡并把目錄lib\gcc810_x64_dll重命名為lib\gcc_dll

注意:解壓後的目錄結構為C:\Data\wxWidgets\lib\gcc_dll

wxWidgets的設定

1.菜單settings->Global Variables

2.單擊按鈕New

3.輸入wx,确定

4.base,設為C:\Data\wxWidgets

建立wxWidgets工程

1.wxWidgets vision選wxWidgets 3.1.x

2.Preferred Gui Builder選 wxSmith

3.Application Type選 Frame Based

4.wxWidgets location 設為$(#wx)

5.wxWidgets Library Settings選 User wxWidgets DLL與Enable unicode

6. 勾選Create Empty Project和Configure Advanced Options

7. Debug Target和Release Target選GUI Mode Application

或者建立後在Project--Properties--Build targets上工程類型從Console application改為GUI application. 不然會在運作時出現控制台視窗。注:其實控制台界面可以用  标準輸入輸出  來調試函數,免去了用MessageBox的麻煩,釋出可執行檔案時再改為GUI Application。

Wxwidgets程式的靜态連結

wxWidgets網站上下載下傳的隻有DLL庫,需要自己編譯靜态庫。

使用git 下載下傳代碼倉庫,不然不會有第三方的庫,比如expat, zlib等。不嫌麻煩也可以一個一個在wxWidgets的github網站上下載下傳好再解壓到對應的源碼目錄,例如https://github.com/wxWidgets/libexpat:

  • git clone --recurse-submodules -j4 https://github.com/wxWidgets/wxWidgets.git
  • 或者
    • git clone  https://github.com/wxWidgets/wxWidgets.git
    • cd wxWidgets
    • git submodule update --init --recursive
      • git submodule init
      • git submodule update
    • git checkout -b 3.1.5 v3.1.5

1.  編譯Wxwidgets靜态庫

dos視窗下,進入wxWidgets編譯目錄build\msw, 執行如下指令

mingw32-make -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=0 UNICODE=1 2> err.log

mingw32-make -f makefile.gcc BUILD=debug SHARED=0 MONOLITHIC=0 UNICODE=1 2> err.log

2. 建立wxWidgets工程時,不要選擇“Use wxWidgets DLL”

進入project->build options

a)選擇Compiler settings,

在Other options中,删除-mthreads

b)選擇Linker settings,

在Other linker options中,删除-mthreads,然後輸入如下内容

--disable-mthreads -static-libstdc++  -static-libgcc

此時還需要MinGW64中的libwinpthread-1.dll,否則報無法正常啟動(0xc000007b)

繼續增加“ -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic” 注意 -lstdc++ 在 -lpthread 之前。

完整的Other linker options:

--disable-mthreads -static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic

Release版本的wxWidgets Hello World例程.exe大小為6.6MB。

錯誤處理

fatal error: wx/setup.h: No such file or directory

檢視gcc編譯的指令行,看-I選項包含的頭檔案目錄。 另外靜态連結時,即使時Debug版本還是搜尋release版本的庫目錄裡的gcc_lib\mswu\wx\setup.h 。u

繼續閱讀