日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows下通过MinGW进行WxWidgets的动态编译与静态编译

發布時間:2025/7/14 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows下通过MinGW进行WxWidgets的动态编译与静态编译 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.在Window中下載MingW

2.為MingW設置環境變量,確保在CMD中可以找到ming32-make。

3.下載wxWidgets的源碼包

4.在CMD中進入wxWidgets\build\msw,執行下面的命令進行編譯(根據自己的需要進行編譯,不用全部編譯)

MONOLITHIC=1的含義:將生成的庫文件整合的一個文件中,這個文件會很大。所以我一般將MONOLITHIC設置為0。

動態庫debug版本:

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

動態庫release版本:

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

靜態庫release版本:

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

上面編譯完成后,會生成對應的lib庫

靜態庫文件

wxWidgets\lib\gcc_lib

靜態庫所需的頭文件,release版本在mswu中,debug版本在mswud中,因為我們沒有生成靜態庫的debug版本,所以不會出現mswud這個文件夾。

wxWidgets\lib\gcc_lib\mswu

動態庫文件

wxWidgets\lib\gcc_dll

靜態庫所需的頭文件,release版本在mswu中

wxWidgets\lib\gcc_dll\mswu

靜態庫所需的頭文件,debug版本在mswud中

wxWidgets\lib\gcc_dll\mswud

5.寫個測試文件Hello.cpp

#include <wx/wx.h>class Simple : public wxFrame { public:Simple(const wxString& title);};Simple::Simple(const wxString& title): wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250, 150)) {Centre(); }class MyApp : public wxApp { public:virtual bool OnInit(); };IMPLEMENT_APP(MyApp)bool MyApp::OnInit() {Simple *simple = new Simple(wxT("Simple"));simple->Show(true);return true; }

6.在CMD中進入Hello.cpp所在的文件夾,輸入下面的編譯命令:

動態庫(Release)版本:

g++ ?minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll -lwxmsw31u_xrc -lwxmsw31u_html -lwxmsw31u_adv -lwxmsw31u_core -lwxbase31u_xml -lwxbase31u_net -lwxbase31u -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion

靜態庫(Release)版本:

g++ ?minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_lib\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_lib -lwxmsw31u_xrc -lwxmsw31u_html -lwxmsw31u_adv -lwxmsw31u_core -lwxbase31u_xml -lwxbase31u_net -lwxbase31u -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion

動態庫(Debug)版本:

g++ ?minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll -lwxmsw31ud_xrc -lwxmsw31ud_html -lwxmsw31ud_adv -lwxmsw31ud_core -lwxbase31ud_xml -lwxbase31ud_net -lwxbase31ud -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion

※關于wxWidgets靜態庫版本必須的庫文件

靜態鏈接時需要的wxWidgets庫 (xx is wxWidgets version, such as 30):
  • libwxmswxxu_core.a
  • libwxbasexxu.a
  • libwxpng.a
  • libwxjpeg.a
  • libwxtiff.a
  • libwxzlib.a
靜態鏈接需要額外鏈接Windows的庫(在mingw\lib\目錄下)
  • libole32.a
  • libuuid.a
  • libcomctl32.a
  • liboleaut32.a
  • libcomdlg32.a
  • libwinspool.a
  • libgdi32.a
  • libShlwapi.a
  • libversion.a

※去除默認生成的wxWidgets程序的控制臺窗口

由于編譯時使用的是控制臺方式,所以生成的程序會多出一個控制臺窗口,

應該使用GUI方式。解決的方法是向鏈接器ld傳入“--subsystem,windows”參數,這需要用-Wl讓gcc把這個參數傳給ld。

?

動態庫(Release)版本:

g++ -Wl,--subsystem,windows minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll -lwxmsw31u_xrc -lwxmsw31u_html -lwxmsw31u_adv -lwxmsw31u_core -lwxbase31u_xml -lwxbase31u_net -lwxbase31u -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion

靜態庫(Release)版本:

g++ -Wl,--subsystem,windows minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_lib\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_lib -lwxmsw31u_xrc -lwxmsw31u_html -lwxmsw31u_adv -lwxmsw31u_core -lwxbase31u_xml -lwxbase31u_net -lwxbase31u -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion

動態庫(Debug)版本:

g++ -Wl,--subsystem,windows minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll -lwxmsw31ud_xrc -lwxmsw31ud_html -lwxmsw31ud_adv -lwxmsw31ud_core -lwxbase31ud_xml -lwxbase31ud_net -lwxbase31ud -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion

轉載于:https://www.cnblogs.com/elitiwin/p/5341304.html

總結

以上是生活随笔為你收集整理的Windows下通过MinGW进行WxWidgets的动态编译与静态编译的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。