• 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使用官方案例,代码如下:

    1. // Start of wxWidgets "Hello World" Program
    2. #include
    3. #include "windows.h"
    4. class MyApp : public wxApp
    5. {
    6. public:
    7. bool OnInit() override;
    8. };
    9. wxIMPLEMENT_APP(MyApp);
    10. class MyFrame : public wxFrame
    11. {
    12. public:
    13. MyFrame();
    14. private:
    15. void OnHello(wxCommandEvent& event);
    16. void OnExit(wxCommandEvent& event);
    17. void OnAbout(wxCommandEvent& event);
    18. };
    19. enum
    20. {
    21. ID_Hello = 1
    22. };
    23. bool MyApp::OnInit()
    24. {
    25. MyFrame *frame = new MyFrame();
    26. frame->Show(true);
    27. return true;
    28. }
    29. MyFrame::MyFrame()
    30. : wxFrame(nullptr, wxID_ANY, "Hello World")
    31. {
    32. wxMenu *menuFile = new wxMenu;
    33. menuFile->Append(ID_Hello, "&Hello...\tCtrl-H",
    34. "Help string shown in status bar for this menu item");
    35. menuFile->AppendSeparator();
    36. menuFile->Append(wxID_EXIT);
    37. wxMenu *menuHelp = new wxMenu;
    38. menuHelp->Append(wxID_ABOUT);
    39. wxMenuBar *menuBar = new wxMenuBar;
    40. menuBar->Append(menuFile, "&File");
    41. menuBar->Append(menuHelp, "&Help");
    42. SetMenuBar( menuBar );
    43. CreateStatusBar();
    44. SetStatusText("Welcome to wxWidgets!");
    45. Bind(wxEVT_MENU, &MyFrame::OnHello, this, ID_Hello);
    46. Bind(wxEVT_MENU, &MyFrame::OnAbout, this, wxID_ABOUT);
    47. Bind(wxEVT_MENU, &MyFrame::OnExit, this, wxID_EXIT);
    48. }
    49. void MyFrame::OnExit(wxCommandEvent& event)
    50. {
    51. Close(true);
    52. }
    53. void MyFrame::OnAbout(wxCommandEvent& event)
    54. {
    55. wxMessageBox("This is a wxWidgets Hello World example",
    56. "About Hello World", wxOK | wxICON_INFORMATION);
    57. }
    58. void MyFrame::OnHello(wxCommandEvent& event)
    59. {
    60. wxLogMessage("Hello world from wxWidgets!");
    61. }

    CMakeLists.txt代码如下:

    1. cmake_minimum_required(VERSION 3.26)
    2. project(wxWidgets_test)
    3. include_directories(${PROJECT_SOURCE_DIR}/include)#设置头文件目录
    4. link_directories(${PROJECT_SOURCE_DIR}/dll)#设置库文件目录
    5. set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/dll)#设置EXE生成目录
    6. add_executable(main main.cpp)
    7. 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.当然库文件所在目录也要写对

  • 相关阅读:
    软考高级系统架构师_计算机组成与结构02_高速缓存_磁盘结构_输入输出技术_总线结构_可靠性_---软考高级系统架构师005
    目的:ubuntu下编译GLFW库
    mybatis标签详解,一篇就够了
    MAC地址修改工具 WiFiSpoof 简体中文
    2022HBCPC 优美的字符串
    Vue 先初始化父组件再初始化子组件的方法(自定义父子组件mounted执行顺序)
    AutoCAD Electrical 2022—项目中新建、添加、删除图纸
    强大CSS3可视化代码生成器
    kubernetes的服务暴露Service的三种常用类型
    初始MySQL(六)(自增长,索引,事务,隔离级别)
  • 原文地址:https://blog.csdn.net/LILI00000/article/details/133999918