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的动态编译与静态编译相关推荐

  1. 在Windows下使用MinGW静态编译Assimp

    使用MinGW静态编译Assimp 到了5月份了,没有写一篇日志,于是自己从知识库里面拿出一篇文章充数吧.这次将要解说怎样在Windows下使用MinGW静态编译Assimp. Assimp是眼下比較 ...

  2. [转]cscope在windows下使用mingw编译的方法

    cscope在windows下使用mingw编译的方法      http://blog.csdn.net/mslk/archive/2007/05/06/1598513.aspx cscope在wi ...

  3. Windows下查看exe可执行程序或dll动态库所依赖dll动态库的方法

    Windows下查看exe可执行程序或dll动态库所依赖dll动态库的方法 如需转载请标明出处:http://blog.csdn.net/itas109 技术交流:129518033 文章目录 Win ...

  4. 手把手教你在Windows下使用MinGW编译libav

    2019独角兽企业重金招聘Python工程师标准>>> 手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言开发的,不可避免的,libav ...

  5. 手把手教你在Windows下使用MinGW编译libav(参考libx264的编入)

    转自:http://www.th7.cn/Program/cp/201407/242762.shtml 手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言 ...

  6. 开源项目:windows下使用MinGW+msys编译ffmpeg

    本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处.     FFmpeg是在Linux平台下开发的, ...

  7. windows下使用MinGW+msys编译ffmpeg

    本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处.     FFmpeg是在Linux平台下开发的, ...

  8. windows 下使用 MinGW + msys 编译 ffmpeg

    本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处.     FFmpeg是在Linux平台下开发的, ...

  9. Windows下使用MinGw和gcc构建第一个C程序、g++构建第一个C++程序

    gcc与g++都gnu的编译器:gcc是c语言的编译器:g++是c++的编译器:gdb 是调试工具. 看着有些面生:都是Linux的东西: MinGw 是 Minimal GNU on Windows ...

最新文章

  1. SUID SGID LINUX 权限安全设置
  2. ASP.NET AJAX文档-ASP.NET AJAX 概述[翻译](1)
  3. 64匹马,8个赛道,最少多少次比赛找出最快的 4 匹马,以及对所有马进行排序
  4. SQL Server2005 日期字段与字符串比较的怪异问题
  5. iOS UIScrollView和缩放
  6. Linux的操作系统下载及安装
  7. HiJson工具 火狐浏览器中的jsonHandle插件(以及乱码问题的解决)--来转换json串的格式
  8. linux内核源码分析之虚拟内存映射
  9. 编写一个链表结构关于车的属性,读取任意多辆车的车型、车牌号、外形颜色、价钱输入。之后遍历链表,再将链表数据打印出来。
  10. Mac微信小助手(免认证登录、多开、防撤回)---强烈推荐
  11. STM32单片机开发实例 基于STM32单片机的智能行李箱
  12. 宏碁暗影骑士擎安装双系统踩坑记录
  13. win10链接无线打印服务器,win10系统无法添加无线打印机的解决技巧
  14. ARM交叉编译工具链分类说明
  15. 一些可以参考的文档集合4
  16. 在PYNQ-Z2上移植RISC-V
  17. vue+openlayers实现地图打点
  18. mysql against无法搜索出结果_在搜索少于4个字符的字符串时,MATCH AGAINST在MySQL中不显示记录...
  19. vb6.0 类没有注册,查找具有 CLSID 的对象:{7EBDAAE0-8120-11CF-899F-00AA00688B10} 7EBDAAE1 7EBDAAE2
  20. Java JDK 1.8 下载及其版本说明 8u202(最后一个免费版)

热门文章

  1. 【推荐】《精通.NET互操作:P/Invoke,C++ Interop和COM Interop》
  2. js实时监听窗口变化总结
  3. 用jar命令将Web应用打包成war文件的简单方法
  4. 全国四分之三的光伏电站市场面临较大投资风险
  5. Web项目开发性能优化解决方案
  6. 文件操作:在某手诗文中插入一句话
  7. 适用于System Center 2016所需前期准备工作
  8. HDU-2612 Find a way
  9. 剑破冰山—Oracle开发艺术 前言
  10. “兰董”——激怒式Marketing,Market人底线何在?