Windows平台搭建wxWidgets 3.2.3开发环境

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

PS:

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

后来的更新:这里编译器和版本要分开看:

  • 不同团队发布的编译器应该下载相对就的DLL,不能混用.
  • 这里的版本是指最低版本 

官网解释:

要在系统环境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.当然库文件所在目录也要写对

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值