我沒有概念是否有現成的 dll 可以直接下載,還是走了老方法自己 build 一套;但不是 dll build不出來,不然就是C::B一直說錯版本,最後才在 youtube上試到可行的方式,
Code::Blocks 16.01 含 mingw 的版本 wxWidgets 3.0.2 Windows 的版本
1. Build wxWidgets:
cmd (console)下:
//==============================================
先設定 compiler 路徑:
set MinGW=C:\Program Files (x86)\CodeBlocks\MinGW\
set Path=%MinGW%bin;%MinGW%mingw32\bin;%Path%
//==============================================
將路徑移至 wxWidets 資料夾後,清除資料再進行編譯(約30分鐘或更久)
cd wxWidgets-3.0.2\build\msw
SET MAKE_PARM=-f makefile.gcc SHARED=1 MONOLITHIC=1 UNICODE=1 CXXFLAGS=-std=gnu++11
mingw32-make %MAKE_PARM% BUILD=release clean
mingw32-make %MAKE_PARM% BUILD=release
//==============================================
檢查是否成功編譯
查看 wxWidgets-3.0.2\lib\gcc_dll 是否有成功產出 dll 檔案
查看 wxWidgets-3.0.2\lib\gcc_dll 是否有成功產出 dll 檔案
//==============================================
lib\gcc_dll\ 底下出現 "mswu" 和 "mswud" 兩個資料夾,
選擇其中一個,將 wx 資料夾裡的setup.h 檔案複製至include\wx 下即可
2. Build wxWidgets project
建立新的project,選擇 wxWidgets project.
選擇 wxWidgets version 3.0.x
GUI Builder 建議使用 WxSmith (C::B 自帶), Applcation Type 我是選 FrameBase.
wxWidgets 路徑,輸入wxWidgets-3.0.2的路徑。
建議!!這邊可以選擇使用 C::B 特有的 Global variable 去提高 project code 的可攜性... 要是公司與家的 lib 路徑不一樣,每天改來改去也不是辦法...(要再找時間寫一下C::B的 Global variable 設定)
選擇引入的wxWidget lib特性,與 project 創建特性,如下:
由於我們之前只產出了 wxWidget 的 release 版 Lib,因此需要讓 Debug 一起使用 release 版的 Lib,選擇(是)。
建議 release 版本選擇 GUI 模式,程式發行時不會有惱人的 console 視窗,發展時可使用一般的訊息輸出簡易除錯。
當 project 建立完後開心的按下編譯....C::B狠心的說沒有 ISO C++ 2011 就不給編。
加入C11 方法:
Project->Build options。 選擇 Project 加入C++11 的選項
再次編譯 C::B 程式,視窗蹦了出來,可是關閉後 console 卻捨不得離開視線。
3. 修改 Debug mode 為一次性關閉
選擇 Project->Properties 中的 Build targets,這邊將console選擇回純GUI 介面,或是取消 console 結束時暫停..
4. 修正 wxWidget 中混編 C 檔案問題,
由於 wx_pch.h 會 include class 造成錯誤,在與 C 檔案混編時,要讓C::B在編譯 C 檔案時強制不引入 wx_pch.h C++ 的內容。
#ifdef __cplusplus
wx_pch.h 檔案內容
#endif //__cplusplus
但還是會出現警告訊息...或許可以嘗試不要強制 include PCH
But....先能動就好
沒有留言:
張貼留言
手機選擇帳號後,按下發布 要再點選一次發布哦