wxWidgets 是一个跨平台的 C++ GUI 框架,和 qt 其实是一类东西。
简单介绍一下wxWidgets的优点:
一、原生界面
wx 不像 java swing 这样,在所有平台都使用相同的外观,也不像qt那样靠模仿平台外观达到“以假乱真”的效果,wx就是对平台API的封装。
二、完全免费
使用wxWidgets编写软件,不论是个人还是商业用途,都是完全免费的,假如你修改了wxWidgets的代码,则必须公开出来。
三、可移植性和发布
这两点放在一起说,因为它们的共同点都是可以很方便的把程序拿到其他设备上使用。跨平台就是一份代码,不需要修改就能在其他平台上编译成可执行文件运行。发布方便是指可以编译成单个可执行文件并静态链接,用户只需下载一个exe,不需要附加一堆dll,也不需要什么特殊的运行环境。我测试过编译好的exe可以在win2003, xp, win7 和 win10运行。
四、其他
wxWidgets相对其他框架来说可能比较小众,但是不用担心,wxWidgets社区非常活跃,github上托管的项目每天都会更新,也有非常棒的官方文档。
缺点:
环境部署比较麻烦,程序体积相对原生api编译的程序大得多,没有非常好用的可视化开发环境。
关于开发环境部署,这里不会详细介绍,按照 官网 的教程来做就可以了,上面的步骤非常详细。我用的是MinGW32位编译器,wxWidgets 3.0.4版本,我的编译指令是这样的:
mingw32-make.exe -j4 -f makefile.gcc SHARED=0 MONOLITHIC=1 BUILD=release
-j4 使用4个cpu,SHARED=0 是静态链接。
下面步入正题,Hello World 程序的分析。
Hello world 例程是官方教程里的第一个程序,可以作为以后编写其他程序的框架。
下面是使用32位mingw编译的同一个exe(7MB)在不同版本windows上运行的结果