当前位置: 首页 > news >正文

visual studio编译wxWidgets

目录

  • 前言
  • 选择wxWidget的原因
  • 编译环境
  • 源码下载
  • 编译源码
    • 解压文件
    • 打开visual studio 2022工程
    • 选择编译内容
  • 验证库
    • 新建Windows桌面应用程序
    • 构建wxWidgets框架项目
    • 配置开发环境
      • 设置附加包含目录
      • 设置附加库目录
      • 检查链接器系统设置

前言

https://zhuanlan.zhihu.com/p/5396267950,如果这篇文章被CSDN弄成收费的了,后面看不了的话,可以直接看开头的那个链接,我也是参照那篇文章弄的。

选择wxWidget的原因

由于Qt版权收紧,为避免纠纷我需要切换其他商业免费的UI框架。目前我从事的是嵌入式linux应用开发,使用LVGL和AWTK比较多,但是在桌面端开发这两个UI框架并不是那么适合。wxWidgets拥有像Qt那样的事件回调且使用C++编写,能满足我的使用需求。

编译环境

操作系统:windows10
开发工具:visual studio 2022
代码版本:wxWidgets-3.3.2

源码下载

源码下载地址为https://wxwidgets.org/downloads/,打开页面后,点击Windows ZIP即可下载。如果你的下载速度比较慢,那就考虑翻一下墙。

编译源码

解压文件

下载后得到一个zip文件名为wxWidgets-3.3.2.zip,在电脑上解压后显示如下目录:

打开visual studio 2022工程

进入目录wxWidgets-3.3.2\build\msw,选择wx_vc17.sln打开工程。wx_vc18.slnx是vs2026的工程,如果你安装的是vs2026可选择打开wx_vc18.slnx工程。

选择编译内容

打开工程后,会显示如下页面:

点击菜单栏上的生成选择批生成

为了简单操作在这直接点击全选,然后点击生成。有的平台的工具集没装编译会报错,但是能编译出我们需要的就可以了。

验证库

新建Windows桌面应用程序

现在我们新建一个桌面应用程序,按照如下图操作,选择Windows桌面应用程序,然后点击下一步。

输入项目名称,然后点击创建

创建好项目后,生成的文件如下:

对应的windows资源文件显示如下:

构建wxWidgets框架项目

由于我们要构建wxWidgets框架项目,因此需要先删除新建项目时创建的这些文件,避免造成干扰。
在这里我们需要删除头文件源文件以及资源文件三个目录。

在IDE种完成删除后,页面显示如下:

现在我们还要在文件夹中彻底将这些文件删除:

删除后文件夹内容显示如下:

现在我们新建一个源文件,用来编写wxWidgets框架代码:

输入源文件名称后点击添加:

最后得到如下文件:

以下是我让豆包生成的一个简单demo,可以直接拷贝内容到main.cpp中:

#include<wx/wx.h>// 定义应用程序类,继承自wxAppclassMyApp:publicwxApp{public:// 程序入口函数,必须重写virtualboolOnInit();};// 定义主窗口类,继承自wxFrameclassMyFrame:publicwxFrame{public:// 构造函数:创建窗口MyFrame(constwxString&title);private:// 菜单事件处理函数voidOnExit(wxCommandEvent&event);voidOnAbout(wxCommandEvent&event);// 声明事件表(wxWidgets的事件处理机制)wxDECLARE_EVENT_TABLE();};// 事件类型定义(用于绑定事件)enum{ID_About=1,// 关于菜单IDID_Exit// 退出菜单ID};// 实现事件表wxBEGIN_EVENT_TABLE(MyFrame,wxFrame)EVT_MENU(ID_Exit,MyFrame::OnExit)// 绑定退出菜单事件EVT_MENU(ID_About,MyFrame::OnAbout)// 绑定关于菜单事件wxEND_EVENT_TABLE()// 实现应用程序初始化函数boolMyApp::OnInit(){// 创建主窗口:标题为"wxWidgets最简应用",位置(50,50),大小(400,300)MyFrame*frame=newMyFrame("wxWidgets最简应用");frame->Show(true);// 显示窗口returntrue;// 返回true表示初始化成功}// 实现主窗口构造函数MyFrame::MyFrame(constwxString&title):wxFrame(NULL,wxID_ANY,title,wxPoint(50,50),wxSize(400,300)){// 创建菜单栏wxMenu*menuFile=newwxMenu;menuFile->Append(ID_About,"关于(&A)...","显示关于对话框");menuFile->AppendSeparator();menuFile->Append(ID_Exit,"退出(&X)","退出程序");// 创建菜单条并添加菜单wxMenuBar*menuBar=newwxMenuBar;menuBar->Append(menuFile,"文件(&F)");SetMenuBar(menuBar);// 创建状态栏CreateStatusBar();SetStatusText("欢迎使用wxWidgets!");}// 退出事件处理voidMyFrame::OnExit(wxCommandEvent&event){Close(true);// 关闭窗口}// 关于事件处理voidMyFrame::OnAbout(wxCommandEvent&event){// 显示关于对话框wxMessageBox("这是wxWidgets最简应用示例\n""单个main.cpp文件实现完整窗口程序","关于",wxOK|wxICON_INFORMATION);}// 声明应用程序入口(wxWidgets宏)wxIMPLEMENT_APP(MyApp);

配置开发环境

注意:我个人写代码,一般都用日志大法debug,因此我配置的属性都是Release版的,如果你用的是Debug版的注意做区分。
打开属性页面,如下图所示:

设置附加包含目录

添加如下两个目录:
1.wxWidgets-3.3.2\include
2.wxWidgets-3.3.2\include\msvc

设置附加库目录

添加如下目录:
1.wxWidgets-3.3.2\lib\vc_x64_lib

检查链接器系统设置

由于我们创建的是windows桌面应用,因此链接器->系统->子系统应该选择的是窗口

点击“应用”->“确定”,然后按Ctrl+F5编译代码,不出意外的话应用页面显示如下:

http://www.jsqmd.com/news/466383/

相关文章:

  • 防疫站疫苗预约管理系统_Python django flask
  • 2026宁波好用的芯轴品牌生产厂盘点,如何选择靠谱厂家 - 工业推荐榜
  • 2026河北新河优质MC浇筑尼龙加工件推荐榜:pa66尼龙棒/pp尼龙棒/尼龙加工件源头厂家/浇筑尼龙棒/玻纤mc尼龙浇铸棒/选择指南 - 优质品牌商家
  • Django + Vue3 + YOLO 实现车辆检测、测速预警与违章分析平台
  • 互联网大厂Java面试:谢飞机与严肃面试官的搞笑对决
  • 救命神器! 降AIGC工具 千笔·降AIGC助手 VS WPS AI 专科生专属
  • Gemini认证工具创意开发(技术深度解析)
  • 探讨江苏地区井口装置涂装厂家排名,江苏万和涂装排第几? - myqiye
  • 论文查重「避坑」全攻略:Paperxie 四大检测体系如何守住你的毕业「生命线」
  • 2026年胰岛素泵市场盘点:哪款专业品牌更胜一筹?
  • leetcode 3600. 升级后最大生成树稳定性 困难
  • 北京/上海/深圳/杭州/南京/无锡高端腕表维修指南:豪爵/库尔沃/蕾蒙威/播威故障养护与维修全解析 - 时光修表匠
  • 收藏备用!程序员转型AI的三个核心赛道(小白/进阶通用)
  • 产品推荐|八戒光度成像系统全新小型化款来了!
  • word打字输入及删除 很卡,延迟几秒钟
  • 《OpenClaw 实战:从 0 到 1 快速入门到进阶实战》一本全面掌握 OpenClaw 云桌面助理的实战指南:第二部分《进阶篇》
  • 《投资-407》长期价值投资考验的是眼光与格局, 考验的是战略方向的能力,其难度远大于战术上勤奋的能力,如何提升这方面的能力?
  • 高分子电气绝缘自粘胶带
  • 《OpenClaw 实战:从 0 到 1 快速入门到进阶实战》一本全面掌握 OpenClaw 云桌面助理的实战指南:第一部分 入门篇
  • 见面三分情:为什么当面沟通是最强大的沟通方式
  • 虚幻 UE5 像素流多用户部署,像素流多实例部署
  • Claude Opus4.6 实战记录,欢迎对标和超越!
  • Charlee44的技术驿站
  • 电商平台重复性咨询少 78%,KoalaQA AI 售后太省心
  • 在训练数据投毒:让算法认为996违反物理定律
  • 一篇文章带你搞懂“设计模式”! - - 责任链模式(23)
  • 北京营养自愈力专家亲测分享:效果真的好!
  • 基于分布式驱动电动汽车的‘四轮侧偏刚度估计‘模型:采用容积卡尔曼(CKF)进行估计并联合sim...
  • AI 重塑产品管理工具:从 Jira 到智能体项目经理的终极演进
  • 低代码 + AI = 对话方式生成UI