龙空技术网

Ubuntu搭建wxWidgets环境,安装CodeBlocks,可以运行demo界面了

flyiot 39

前言:

此时看官们对“codeblocks无法编译中文”大概比较注重,兄弟们都想要学习一些“codeblocks无法编译中文”的相关资讯。那么小编也在网上汇集了一些对于“codeblocks无法编译中文””的相关资讯,希望大家能喜欢,看官们快快来了解一下吧!

1,选择使用 wxWidgets 框架

选择这个主要是因为完全的开源,不想折腾 Qt的库,而且打包的文件比较大。

网络上面有很多的对比,而且使用QT的人比较多。 但是我觉得wxwidgets 更加偏向 c++ 语法本身,也有助学习C++。 没有太多的特殊封装,而且商业化更加友好,打包软件也比较少。

更偏向原生的系统,做好相关的功能开发。

2,在 ubuntu上进行安装320版本环境

先增加证书授权:

bash# 增加签名sudo apt-key adv --fetch-keys  安装源# 生成一个文件 /etc/apt/sources.list.d/archive_uri-https_repos_codelite_org_wx3_2_ubuntu_-jammy.list# 不需要可以删除掉sudo apt-add-repository 'deb  jammy universe'#3,安装库apt-get install libwxbase3.2-0-unofficial \                libwxbase3.2unofficial-dev \                libwxgtk3.2-0-unofficial \                libwxgtk3.2unofficial-dev \                wx3.2-headers \                wx-common \                libwxgtk-media3.2-0-unofficial \                libwxgtk-media3.2unofficial-dev \                libwxgtk-webview3.2-0-unofficial # 特别奇怪,其余的库要一个一个进行安装,不能批量执行。sudo apt-get install libwxgtk-webview3.2unofficial-dev sudo apt-get install libwxgtk-webview3.2-0-unofficial-dbg sudo apt-get install libwxbase3.2-0-unofficial-dbg
3,解决编译问题 undefined reference to `pcre2_config_32'|
bash||=== Build: Debug in demo02 (compiler: GNU GCC Compiler) ===|||warning: libpcre2-32.so.0, needed by /usr/lib/x86_64-linux-gnu/libwx_baseu_unofficial-3.2.so, not found (try using -rpath or -rpath-link)|/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libwx_baseu_unofficial-3.2.so||undefined reference to `pcre2_config_32'|/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libwx_baseu_unofficial-3.2.so||undefined reference to `pcre2_code_free_32'|/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libwx_baseu_unofficial-3.2.so||undefined reference to `pcre2_get_ovector_pointer_32'|/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libwx_baseu_unofficial-3.2.so||undefined reference to `pcre2_match_data_create_from_pattern_32'|/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libwx_baseu_unofficial-3.2.so||undefined reference to `pcre2_compile_32'|/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libwx_baseu_unofficial-3.2.so||undefined reference to `pcre2_match_data_free_32'|/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libwx_baseu_unofficial-3.2.so||undefined reference to `pcre2_match_32'|/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libwx_baseu_unofficial-3.2.so||undefined reference to `pcre2_get_error_message_32'|||error: ld returned 1 exit status|||=== Build failed: 9 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|

终于找到问题,通过安装 libpcre2-dev 解决

bashsudo apt install libpcre2-dev
4,第一个hello world,并进行编译

参考在线手册: 第一个hello world 文档:

c// wxWidgets "Hello World" Program // For compilers that support precompilation, includes "wx/wx.h".#include <wx/wxprec.h> #ifndef WX_PRECOMP    #include <wx/wx.h>#endif class MyApp : public wxApp{public:    virtual bool OnInit();}; class MyFrame : public wxFrame{public:    MyFrame(); private:    void OnHello(wxCommandEvent& event);    void OnExit(wxCommandEvent& event);    void OnAbout(wxCommandEvent& event);}; enum{    ID_Hello = 1}; wxIMPLEMENT_APP(MyApp); bool MyApp::OnInit(){    MyFrame *frame = new MyFrame();    frame->Show(true);    return true;} MyFrame::MyFrame()    : wxFrame(NULL, 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!");}

进行编译:

bashc++ -o main main.cpp  `wx-config --cxxflags --libs`

然后运行main

5,使用工具 codeblocks 进行开发

直接通过下载文件安装,或者apt 安装即可。

bashsudo apt install -y codeblocks

命令就是 codeblocks

可以按照模板,创建一个 wxWidgets的项目。

运行效果:

6,总结

已经有人总结了项目视频:

PDF资料:

还有静态编译的办法,需要重新编译wxwidgets,否则没有库文件:

继续学习 wxWidgets。

标签: #codeblocks无法编译中文 #ubuntu命令安装中文环境 #tryubuntu只显示桌面 #codeblocks无法运行怎么弄 #ubuntucodelite安装