Visual Studio 2026 编译并配置wxWidgets GUI组件库
2026/9/12 15:36:57 网站建设 项目流程

前言

本人是C++编程爱好者,但不是职业程序员,由于不长期做开发,每次想写程序的时候,都得重新配置系统,并且之前配置的方法可能早已经忘了,本次看到关于Visual Studio编译和配置wxWidgets的文章,原作者用的非常详尽,实用,故进行参照原文件,进行了改写,把自己的理解和平时遇到的问题也进行了总结,在此感谢原作者的无私奉献。

参考链接:

1、https://zhuanlan.zhihu.com/p/5396267950

2、visual studio编译wxWidgets_visual studio 2022配置wxwidgets-CSDN博客

选择wxWidget的原因

wxWidgets 有什么优点,其实就是基本调用其它系统的原生 GUI,所以生成的程序包很小,运行效率很高,适合轻量级开发,并且可以自由的商用开发使用,不涉及到版权问题。
由于Qt功能很全,版权收紧,这正是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工程。

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

选择编译内容

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

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

为了简单操作在这直接点击全选,然后点击生成。

等到完成后,正常情况下是下面这个样子:

有的平台的工具集没装编译会报错,但是能编译出我们需要的就可以了。此处提醒一下,因为新手看到这么多报错的信息,直接就崩溃了,认为编译出错了,实际上由于上面编译时我们选择的是全部,会有一些编译器没有安装,但常用的编译器已经安装了,不影响我们项目的进行,如果想彻底解决报错,两种办法:

(1)在“批生成”中一个个挑,不要点击全选。

(2)安装其编译器。你可以找开 Visual Stuido Install,在里面找到相关的编译器安装即可。

验证库

新建Windows桌面应用程序

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

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

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

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

建wxWidgets框架项目

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

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

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

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

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

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

以下是我在wxWidgets官方拷贝的一个简单demo,可以直接拷贝内容到main.cpp中:

// Start of wxWidgets "Hello World" Program
#include <wx/wx.h>

class MyApp : public wxApp
{
public:
bool OnInit() override;
};

wxIMPLEMENT_APP(MyApp);

class MyFrame : public wxFrame
{
public:
MyFrame();

private:
void OnHello(wxCommandEvent& event);
void OnExit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
};

enum
{
ID_Hello = 1
};

bool MyApp::OnInit()
{
MyFrame* frame = new MyFrame();
frame->Show(true);
return true;
}

MyFrame::MyFrame()
: wxFrame(nullptr, wxID_ANY, "Hello World")
{
wxMenu* menuFile = new wxMenu;
menuFile->Append(ID_Hello, "&Hello...\tCtrl-H",
"Help string shown in status bar for this menu item");
menuFile->AppendSeparator();
menuFile->Append(wxID_EXIT);

wxMenu* menuHelp = new wxMenu;
menuHelp->Append(wxID_ABOUT);

wxMenuBar* menuBar = new wxMenuBar;
menuBar->Append(menuFile, "&File");
menuBar->Append(menuHelp, "&Help");

SetMenuBar(menuBar);

CreateStatusBar();
SetStatusText("Welcome to wxWidgets!");

Bind(wxEVT_MENU, &MyFrame::OnHello, this, ID_Hello);
Bind(wxEVT_MENU, &MyFrame::OnAbout, this, wxID_ABOUT);
Bind(wxEVT_MENU, &MyFrame::OnExit, this, wxID_EXIT);
}

void MyFrame::OnExit(wxCommandEvent& event)
{
Close(true);
}

void MyFrame::OnAbout(wxCommandEvent& event)
{
wxMessageBox("This is a wxWidgets Hello World example",
"About Hello World", wxOK | wxICON_INFORMATION);
}

void MyFrame::OnHello(wxCommandEvent& event)
{
wxLogMessage("Hello world from wxWidgets!");
}

配置开发环境 注意:我个人写代码,一般都用日志大法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编译代码,不出意外的话应用页面显示如下:

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询