ADSense script

Code Colors

2017年1月13日 星期五

久違的 wxWidgets

由於 win7 最近需要一些工具,Console 說他解決不了,剛好 wxWidgets 湊巧路過,於是就開始了痛苦的掙扎......
我沒有概念是否有現成的 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 檔案


//==============================================
把setup.h檔案複製到 include 資料夾中
 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 設定)

 一般 Debug / Release的詢問:

選擇引入的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....先能動就好

沒有留言:

張貼留言

手機選擇帳號後,按下發布 要再點選一次發布哦

牙醫助理上班不到一個月被開除

 常常遇到牙醫助理上班不到一個月,甚至幾周,突然被開除,覺得很難過?其實原因很多 1. 試用期未通過