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 - MONOLITHIC=0 SHARED=1 UNICODE=1 BUILD=debug
动态库release版本:
mingw32-make - MONOLITHIC=0 SHARED=1 UNICODE=1 BUILD=release
静态库release版本:
mingw32-make - 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
minimallibwxbasexxu.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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论