Windows平台搭建wxWidgets 3.2.3开发环境

news2024/11/16 7:51:21

一.基础环境和使用的软件

  • 操作系统:win11
  • mingw工具集:i686-8.1.0-release-win32-sjlj
  • IDE:clion
  • wxWidgets头文件:wxWidgets-3.2.3-headers
  • wxWidgets库文件:wxMSW-3.2.3_gcc810_ReleaseDLL

PS:

失败很多次才在网上看到, wxWidgets是挑mingw版本的.gcc用8.1,DLL就要用8.1

官网解释:

要在系统环境PATH设置mingw的路径

二.解压文件

将头文件和库文件解压到一个文件夹,目录如下:

ProjectRoot
├─dll
│  └─xxx.dll
└─include
    ├─msvc
    │  └─wx
    └─wx
        ├─xxx.h

三.创建main.cpp和CMakeLists.txt

main.cpp使用官方案例,代码如下:

// Start of wxWidgets "Hello World" Program
#include <wx/wx.h>
#include "windows.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!");
}

CMakeLists.txt代码如下:

cmake_minimum_required(VERSION 3.26)
project(wxWidgets_test)
include_directories(${PROJECT_SOURCE_DIR}/include)#设置头文件目录
link_directories(${PROJECT_SOURCE_DIR}/dll)#设置库文件目录
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/dll)#设置EXE生成目录
add_executable(main main.cpp)
target_link_libraries(main wxbase32u_gcc810.dll wxmsw32u_core_gcc810.dll)#链接动态库

四.解决遇到的问题

1.fatal error: wx/setup.h: No such file or directory

第一次编译时,会提示:

fatal error: wx/setup.h: No such file or directory
 #include "wx/setup.h"

 setup.h是对应各平台的设置文件,windows下要选对文件.

include\wx\msw目录下,把setup.h复制到include\wx目录下即可.

2.出现大量undefined reference to....

主要是库文件没有链接对,官方案例只用链接wxmsw32u_core_gcc810.dll和wxbase32u_gcc810.dll.当然库文件所在目录也要写对

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1125734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springBoot--ssm整合

ssm整合 1、创建项目并添加依赖2、配置数据源3、创建bean文件4、创建接口文件4.1创建接口文件4.2通过插件生成到mapper文件的xml文件4.3通过param进行签名&#xff0c;以后使用指定的名字在sql中取值4.4在sql语句中通过#{}进行取值4.5mapperScan:告诉MyBatis,扫描那个包下面的所…

【Acwing166】数独(dfs+剪枝+位运算)超级详细题解!

本题思路来源于acwing算法提高课 题目描述 看本文需要准备的知识 1.dfs算法基本思想 2.位运算基础 3.对剪枝这个名词的大概了解 剪枝优化位运算优化 常见四种剪枝策略 首先考虑这道题的搜索顺序&#xff0c;很明显&#xff0c;可以随意选择一个空格子&#xff0c;分支为这…

深入理解Java中的AbstractQueuedSynchronizer(AQS):并发编程的核心组件

文章目录 &#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。&#x1f30e;跑过十五…

wait、notify、notifyAll 方法的使用注意事项?

Java全能学习面试指南&#xff1a;https://javaxiaobear.cn 我们主要学习 wait/notify/notifyAll 方法的使用注意事项。 我们主要从三个问题入手&#xff1a; 为什么 wait 方法必须在 synchronized 保护的同步代码中使用&#xff1f;为什么 wait/notify/notifyAll 被定义在 …

基于灰狼算法的无人机航迹规划-附代码

基于灰狼算法的无人机航迹规划 文章目录 基于灰狼算法的无人机航迹规划1.灰狼搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用灰狼算法来优化无人机航迹规划。 1.灰狼搜索算法 …

Python桌面应用之XX学院水卡报表查询系统(Tkinter+cx_Oracle)

一、功能样式 Python桌面应用之XX学院水卡报表查询系统功能&#xff1a; 连接Oracle数据库&#xff0c;查询XX学院水卡操作总明细报表&#xff0c;汇总数据报表&#xff0c;个人明细报表&#xff0c;进行预览并且支持导出报表 1.总明细报表样式 2.汇总明细样式 3.个人明细…

Proteus仿真--VB上位机程序控制DS1302时钟仿真(Proteus仿真+程序)

本文主要介绍基于51单片机的VB上位机程序控制DS1302时钟仿真设计&#xff08;完整仿真源文件及代码见文末链接&#xff09; 简介 硬件电路主要分为单片机主控模块、DS1302模块、LCD1602液晶显示模块以及串口模块 &#xff08;1&#xff09;单片机主控模块&#xff1a;单片机选…

Unity编辑器扩展 --- AssetPostprocessor资源导入自动设置

unity导入资源的编辑器设置: 防止策划资源乱导入,资源导入需要的格式&#xff0c;统一资源管理 AssetPostprocessor资源导入管线 AssetPostprocessor用于在资源导入时自动做一些设置&#xff0c;比如当导入大量图片时&#xff0c;自动设置图片的类型&#xff0c;大小等。Ass…

volatile-读写屏障插入策略

6.2.4 困难内容 JMM就将内存屏障插入策略分为4种规则 读屏障&#xff1a; 写屏障&#xff1a;

图像语义分割 pytorch复现DeepLab v1图像分割网络详解以及pytorch复现(骨干网络基于VGG16、ResNet50、ResNet101)

图像语义分割 pytorch复现DeepLab v1图像分割网络详解以及pytorch复现&#xff08;骨干网络基于VGG16、ResNet50、ResNet101&#xff09; 背景介绍2、 网络结构详解2.1 LarFOV效果分析 2.2 DeepLab v1-LargeFOV 模型架构2.3 MSc&#xff08;Multi-Scale&#xff0c;多尺度(预测…

Docker Swarm 节点维护

Docker Swarm Mode Docker Swarm 集群搭建 Docker Swarm 节点维护 Docker Service 创建 1.角色转换 Swarm 集群中节点的角色只有 manager 与 worker&#xff0c;所以其角色也只是在 manager 与worker 间的转换。即 worker 升级为 manager&#xff0c;或 manager 降级为 worke…

软件测试 (用例篇)

前言 上一篇博客讲述的是一次基本的测试过程。 在我们开始做了一段时间基础测试&#xff0c;熟悉了业务之后&#xff0c;往往会分配来写测试用例&#xff0c;并且在日常测试中&#xff0c;有时也需要补充测试用例到现有的案例库中。 在这里我们将回答以下问题 1、测试用例的…

Pytorch深度学习快速入门—LeNet简单介绍(附代码)

一、网络模型结构 LeNet是具有代表性的CNN&#xff0c;在1998年被提出&#xff0c;是进行手写数字识别的网络&#xff0c;是其他深度学习网络模型的基础。如下图所示&#xff0c;它具有连狙的卷积层和池化层&#xff0c;最后经全连接层输出结果。 二、各层参数详解 2.1 INPUT层…

上门预约洗鞋小程序开发;

上门洗鞋小程序服务小程序是一款方便用户与服务提供者进行交流和预约的平台&#xff0c;覆盖多个行业&#xff0c;包括家政清洁、洗衣洗鞋&#xff0c;维修服务等&#xff0c;满足用户在生活中各种需求的上门服务。用户可以在小程序中选择服务项目、预约时间&#xff0c;服务人…

JDK的配置及运行过程

文章目录 介绍JDK编译运行过程为什么要配置环境变量配置环境变量的作用 配置JDK验证ps: 介绍JDK 【面试题】JDK、JRE、JVM之间的关系&#xff1f; JDK(Java Development Kit):Java开发工具包&#xff0c;提供给Java程序员使用&#xff0c;包含了JRE&#xff0c;同时还包含了编译…

Mysql如何理解Sql语句?MySql分析器

1. 什么是 MySQL 分析器? MySQL 分析器是 MySQL 数据库系统中的一个关键组件&#xff0c;它负责解析 SQL 查询语句&#xff0c;确定如何执行这些查询&#xff0c;并生成查询执行计划。分析器将 SQL 语句转换为内部数据结构&#xff0c;以便 MySQL 可以理解和执行查询请求。 …

数据集特征预处理

1、什么是特征预处理 1.1、什么是特征预处理 scikit-learn的解释 provides several common utility functions and transformer classes to change raw feature vectors into a representation that is more suitable for the downstream estimators. 翻译过来&#xff1a;通…

VRPTW(MATLAB):斑马优化算法ZOA求解带时间窗的车辆路径问题VRPTW(提供参考文献及MATLAB代码)

一、VRPTW简介 带时间窗的车辆路径问题(Vehicle Routing Problem with Time Windows, VRPTW)是车辆路径问题(VRP)的一种拓展类型。VRPTW一般指具有容量约束的车辆在客户指定的时间内提供配送或取货服务&#xff0c;在物流领域应用广泛&#xff0c;具有重要的实际意义。VRPTW常…

嵌入式系统设计中时钟抖动的基础

嵌入式开发时钟抖动是时钟沿偏离其理想位置的偏差。了解时钟抖动在应用中非常重要&#xff0c;因为它在系统的时序预算中起着关键作用。它有助于嵌入式开发工程师了解系统时序裕度。 随着系统数据速率的提高&#xff0c;时序抖动已成为系统设计中的关键&#xff0c;因为在某些…

[资源推荐]看到一篇关于agent的好文章

链接在此&#xff1a;Chat 向左&#xff0c;Agent 向右 - 李博杰的文章 - 知乎 https://zhuanlan.zhihu.com/p/662704254当时在电脑知乎上看了一半&#xff0c;打开手机微信公众号&#xff0c;就给我推了同样的&#xff0c;这推荐算法&#x1f625;今年关于大模型的想法经历了几…