• wxWidgets从空项目开始Hello World


    前文回顾

    接上篇,已经是在CodeBlocks20.03配置了wxWidgets3.0.5,并且能够通过项目创建导航创建一个新的工程,并且成功运行。

    那么上一个是通过CodeBlocks的模板创建的,一进去就已经是2个头文件+2个cpp文件,总是感觉缺少点基础,不看一下从空项目怎么弄出wxWidgets总感觉不爽。

    从空项目开始的wxWidgets

    创建新的空项目

    1. 新建项目--> empty project
    2. 新建一个 empty file,保存为wxMain.cpp

    Hello World的代码

    一个wxWidgets的最简单程序,需要一个MyFrame类继承wxFrame用于窗体UI,另外需要一个wxApp类来控制程序,且需要重写OnInit()函数。

    1. #include
    2. class MyFrame: public wxFrame // MyFrame要放在上面
    3. {
    4. public:
    5. MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
    6. : wxFrame(NULL, wxID_ANY, title, pos, size){};
    7. };
    8. class MyApp: public wxApp //MyApp会调用 MyFrame
    9. {
    10. public:
    11. virtual bool OnInit(){
    12. MyFrame *frame = new MyFrame( "Hello World", wxPoint(50, 50), wxSize(450, 340) );
    13. frame->Show( true );
    14. return true;
    15. };
    16. };
    17. wxIMPLEMENT_APP(MyApp); //程序入口

    此时在CodeBlocks中的状态如下图所示:

    遇到的几个问题及解决

    1-wx/wx.h:No such file or directory

    1. ||=== Build: Debug in wxEmpty03 (compiler: GNU GCC Compiler) ===|
    2. .\wxMain.cpp|1|fatal error: wx/wx.h: No such file or directory|
    3. ||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

    找不到wx/wx.h文件或目录,这是因为没有指定include的目录,这个目录就是Gcc_dll/include,所以我们把它在项目的Build Option...中添加上就可以去下一步了。

    2-wx/setup.h :No such file or directory

    不仔细看好像上一个问题没解决似的,但这里的确是换了一个文件夹,这里的2个文件分别在不同的文件夹下,我们用一个表格来表示:

    wxMSW_305_bin/
    include/
    msvc
    wx              
    setup.h
    wx
    wx.h

    由上表可见,第1个问题是include/wx/wx.h ;而第2个问题是include/msvc/wx/setup.h,解决方法与第一个相似,Add一个include的路径到./msvc即可。

    3- 一堆Error

    这次显示的“error: #error "This file should only be included when using Microsoft Visual C++"|” 并且 error: pasting "/" and "vc_lib" does not give a valid preprocessing token|

    这个已经提示跟lib有关系了,考虑到前面2个问题都是include目录没有指定造成的,那当前的错误就很可能是lib的目录没有指定造成的?这里可以去参考一下前一节模板出来的Build Log,我们加上 -I 再跟上lib所在的目录就可以了:

    4- 运行时错误

    上面的gif最后已经显示了运行时错误,找不到几个.dll文件。

    那么回想一下,到目前为止的操作中就没有指示Linker的路径,所以到Build Option里去添加上就可以了!

    小结

    从空项目开始,则需要指示wx.h以及setup.h的include的路径;还需要添加 -I mswud的路径;最后还要在Linker中添加.dll的路径,这样就可以成功运行了~

  • 相关阅读:
    C++模版初阶
    SpringBoot结合dev-tool 实现IDEA项目热部署
    【数据库专家揭秘】MySql数据库设计黄金法则,让你的数据更稳定、更高效!
    sqlite 操作记录。
    代码随想录算法训练营19期第58天
    用Python实现创建十二星座数据分析图表
    Monaco Editor 的基本用法
    HRNet人体关键点检测
    同行北京丨科士达聚渠道之力,共驱数据中心低碳高效发展
    单线程 vs 多进程:Python网络爬虫效率对比
  • 原文地址:https://blog.csdn.net/baidu_24190413/article/details/132643566