当前位置: 首页 > news >正文

用VScode和msys2配置C/C++和wxWidgets

实验环境

操作系统:Windonws11 专业版

开发工具:VScode和msys2

下载VScode和msys2

 1、VScode

VScode官网链接:Visual Studio Code - 代码编辑。重新https://code.visualstudio.com/

点击右上角的下载

选择系统安装此时双击下载好的安装程序

    勾选创建快捷方式,便于后续启动VScode

下载右键VScode桌面图标,点击属性

点击兼容性,在兼容性中勾选以管理员身份运行后点击确定

接着打开插件扩展,并在搜索栏分别搜索Chinese和C\C++后安装

2、msys2

官网:MSYS2https://www.msys2.org/

msys2安装包下载链接:

https://release-assets.githubusercontent.com/github-production-release-asset/80988227/9c9ae8b3-d423-4adb-9273-e402c2b47ede?sp=r&sv=2018-11-09&sr=b&spr=https&se=2025-10-02T11%3A33%3A37Z&rscd=attachment%3B+filename%3Dmsys2-x86_64-20250830.exe&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2025-10-02T10%3A33%3A08Z&ske=2025-10-02T11%3A33%3A37Z&sks=b&skv=2018-11-09&sig=UjCl5zT67wdPBE1Q%2FKCNnppxNxQZubiSVy58gmpF%2B7k%3D&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc1OTQwMjIzNCwibmJmIjoxNzU5NDAxOTM0LCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.ny2gJhzvPbYeIn-iwYinyHCM6DQ-VA0KFLTwvZXJ390&response-content-disposition=attachment%3B%20filename%3Dmsys2-x86_64-20250830.exe&response-content-type=application%2Foctet-stream

不过,因为网站是国外的,可能因延迟过高无法正常访问,建议大家使用加速器或者多线程下载器来加速下载。将msys2的安装包的下载链接复制可用于下载,因为我刚好下载了PCL2启动器,就直接用这个了

如果使用第三方下载器,可能得到文本文件,如下:

将其后缀改为.exe后即可

此时双击下载得到的应用程序:

如果要将其安装到其他盘,如D盘,就修改路径为D:\msys64

接下来一直点击Next即可完成下载 

待安装完成后,软件会自动弹出ucrt64环境的终端:

运行以下命令

 pacman -S mingw-w64-ucrt-x86_64-gcc

终端显示如下:

resolving dependencies...
looking for conflicting packages...

Packages (15) mingw-w64-ucrt-x86_64-binutils-2.41-2
            mingw-w64-ucrt-x86_64-crt-git-11.0.0.r216.gffe883434-1
            mingw-w64-ucrt-x86_64-gcc-libs-13.2.0-2  mingw-w64-ucrt-x86_64-gmp-6.3.0-2
            mingw-w64-ucrt-x86_64-headers-git-11.0.0.r216.gffe883434-1
            mingw-w64-ucrt-x86_64-isl-0.26-1  mingw-w64-ucrt-x86_64-libiconv-1.17-3
            mingw-w64-ucrt-x86_64-libwinpthread-git-11.0.0.r216.gffe883434-1
            mingw-w64-ucrt-x86_64-mpc-1.3.1-2  mingw-w64-ucrt-x86_64-mpfr-4.2.1-2
            mingw-w64-ucrt-x86_64-windows-default-manifest-6.4-4
            mingw-w64-ucrt-x86_64-winpthreads-git-11.0.0.r216.gffe883434-1
            mingw-w64-ucrt-x86_64-zlib-1.3-1  mingw-w64-ucrt-x86_64-zstd-1.5.5-1
            mingw-w64-ucrt-x86_64-gcc-13.2.0-2

Total Download Size:    49.38 MiB
Total Installed Size:  418.82 MiB

:: Proceed with installation? [Y/n]
[... downloading and installation continues ...]

按下“Enther"键,继续下载mingw-w64工具链。

如果终端下载完成后自动关闭了终端界面,打开文件资源管理器找到下载msys2的路径:(以D盘根路径为例)

双击后,向下滑动找到图中所示应用程序

双击后,即可重新唤起ucrt64终端界面:

执行以下命令:

pacman -S mingw-w64-ucrt-x86_64-wxwidgets3.3-msw

此时ucrt64终端将下载wxWidgets库,下载速度比较慢,需耐心等待一段时间。

配置环境

1、配置C/C++环境

打开msys2文件夹,找到ucrt64

打开该文件,复制bin文件的路径:

按下win键,搜索”环境“,打开系统变量(不是”用户变量“,不要搞错了):

点击”环境变量“

选择系统变量中的Path:

点击编辑,再新建路径,粘贴刚才复制的路径(可能带有引号,需去除):

依次点击确定后即保存完毕,打开终端:

分别输入:

gcc -v

g++ -v

gdb -v

如果正常显示版本,即说明 C/C++环境已配置好。

2、创建项目

在D盘中新建文件夹:C++

打开VScode,点击打开文件夹:

选择我们刚创建的文件夹:

新建C++文件:

将这段C++代码粘贴:

MainFrame.cpp

#include <wx/wx.h>// 自定义应用程序类
class MyApp : public wxApp {
public:bool OnInit() override {// 创建主窗口wxFrame* frame = new wxFrame(nullptr, wxID_ANY, "简单wxWidgets程序", wxDefaultPosition, wxSize(400, 300));// 创建面板(用于容纳控件)wxPanel* panel = new wxPanel(frame);// 创建文本框wxTextCtrl* textCtrl = new wxTextCtrl(panel, wxID_ANY, "点击按钮修改我", wxPoint(50, 50), wxSize(300, 30));// 创建按钮,绑定点击事件wxButton* button = new wxButton(panel, wxID_ANY, "点击我", wxPoint(150, 100), wxSize(100, 30));button->Bind(wxEVT_BUTTON, [textCtrl](wxCommandEvent&) {textCtrl->SetValue("你点击了按钮!");});// 显示窗口frame->Show(true);return true;}
};// wxWidgets 程序入口宏
wxIMPLEMENT_APP(MyApp);

可能此时有报错,先调试一下:

此时,会生成.vscode文件夹,请在其中写下这四个代码文件(如果已经生成则覆盖原有的):

.vscode

c_cpp_properties.json

#include <wx/wx.h>

// 自定义应用程序类

class MyApp : public wxApp {

public:

    bool OnInit() override {

        // 创建主窗口

        wxFrame* frame = new wxFrame(nullptr, wxID_ANY, "简单wxWidgets程序",

                                     wxDefaultPosition, wxSize(400, 300));

       

        // 创建面板(用于容纳控件)

        wxPanel* panel = new wxPanel(frame);

       

        // 创建文本框

        wxTextCtrl* textCtrl = new wxTextCtrl(panel, wxID_ANY, "点击按钮修改我",

                                              wxPoint(50, 50), wxSize(300, 30));

       

        // 创建按钮,绑定点击事件

        wxButton* button = new wxButton(panel, wxID_ANY, "点击我",

                                        wxPoint(150, 100), wxSize(100, 30));

        button->Bind(wxEVT_BUTTON, [textCtrl](wxCommandEvent&) {

            textCtrl->SetValue("你点击了按钮!");

        });

       

        // 显示窗口

        frame->Show(true);

        return true;

    }

};

// wxWidgets 程序入口宏

wxIMPLEMENT_APP(MyApp);

launch.json

{

    "version": "0.2.0",

    "configurations": [

        {

            "name": "C/C++ Runner: Debug Session",

            "type": "cppdbg",

            "request": "launch",

            "args": [],

            "stopAtEntry": false,

            "externalConsole": true,

            "cwd": "d:/C++",

            "program": "d:/C++/build/Debug/outDebug",

            "MIMode": "gdb",

            "miDebuggerPath": "gdb",

            "setupCommands": [

                {

                    "description": "Enable pretty-printing for gdb",

                    "text": "-enable-pretty-printing",

                    "ignoreFailures": true

                }

            ]

        },

        {

            "name": "C/C++: g++.exe 构建和调试活动文件",

            "type": "cppdbg",

            "request": "launch",

            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",

            "args": [],

            "stopAtEntry": false,

            "cwd": "${fileDirname}",

            "environment": [],

            "externalConsole": false,

            "MIMode": "gdb",

            "miDebuggerPath": "D:\\msys64\\ucrt64\\bin\\gdb.exe",

            "setupCommands": [

                {

                    "description": "为 gdb 启用整齐打印",

                    "text": "-enable-pretty-printing",

                    "ignoreFailures": true

                },

                {

                    "description": "将反汇编风格设置为 Intel",

                    "text": "-gdb-set disassembly-flavor intel",

                    "ignoreFailures": true

                }

            ],

            "preLaunchTask": "C/C++: g++.exe 生成活动文件"

        }

    ]

}

settings.json

{

  "C_Cpp_Runner.cCompilerPath": "gcc",

  "C_Cpp_Runner.cppCompilerPath": "g++",

  "C_Cpp_Runner.debuggerPath": "gdb",

  "C_Cpp_Runner.cStandard": "",

  "C_Cpp_Runner.cppStandard": "",

  "C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/VR_NR/Community/VC/Auxiliary/Build/vcvarsall.bat",

  "C_Cpp_Runner.useMsvc": false,

  "C_Cpp_Runner.warnings": [

    "-Wall",

    "-Wextra",

    "-Wpedantic",

    "-Wshadow",

    "-Wformat=2",

    "-Wcast-align",

    "-Wconversion",

    "-Wsign-conversion",

    "-Wnull-dereference"

  ],

  "C_Cpp_Runner.msvcWarnings": [

    "/W4",

    "/permissive-",

    "/w14242",

    "/w14287",

    "/w14296",

    "/w14311",

    "/w14826",

    "/w44062",

    "/w44242",

    "/w14905",

    "/w14906",

    "/w14263",

    "/w44265",

    "/w14928"

  ],

  "C_Cpp_Runner.enableWarnings": true,

  "C_Cpp_Runner.warningsAsError": false,

  "C_Cpp_Runner.compilerArgs": [],

  "C_Cpp_Runner.linkerArgs": [],

  "C_Cpp_Runner.includePaths": [],

  "C_Cpp_Runner.includeSearch": [

    "*",

    "**/*"

  ],

  "C_Cpp_Runner.excludeSearch": [

    "**/build",

    "**/build/**",

    "**/.*",

    "**/.*/**",

    "**/.vscode",

    "**/.vscode/**"

  ],

  "C_Cpp_Runner.useAddressSanitizer": false,

  "C_Cpp_Runner.useUndefinedSanitizer": false,

  "C_Cpp_Runner.useLeakSanitizer": false,

  "C_Cpp_Runner.showCompilationTime": false,

  "C_Cpp_Runner.useLinkTimeOptimization": false,

  "C_Cpp_Runner.msvcSecureNoWarnings": false,

  "editor.gotoLocation.alternativeDeclarationCommand": "editor.action.revealDefinition",

  "editor.gotoLocation.alternativeDefinitionCommand": "editor.action.revealDefinition",

  "editor.gotoLocation.alternativeTypeDefinitionCommand": "editor.action.revealDefinition",

  "editor.selectionHighlight": false,

  "files.autoSave": "onFocusChange",

  "editor.suggest.snippetsPreventQuickSuggestions": false,

  "editor.quickSuggestions": {

    "other": "on",

    "comments": "off",

    "strings": "on"

  }

tasks.json

{

    "tasks": [

        {

            "type": "cppbuild",

            "label": "C/C++: g++.exe 生成活动文件",

            "command": "D:\\msys64\\ucrt64\\bin\\g++.exe",

            "args": [

                "-fdiagnostics-color=always",

                "-g",

                "${file}",

                "-I",

                "D:\\msys64\\ucrt64\\include\\wx-3.3",

                "-I",

                "D:\\msys64\\ucrt64\\lib\\wx\\include\\msw-unicode-3.3",

                "-L",

                "D:\\msys64\\ucrt64\\lib",

                "-l:libwx_baseu-3.3.dll.a",      

                "-l:libwx_mswu_core-3.3.dll.a",

                "-fdiagnostics-color=always",

                // 解决汉字乱码问题,没有坐拥

                "-finput-charset=UTF-8",

                // "-fexec-charset=UTF-8",

                "-fexec-charset=GBK",       // 生成的可执行文件使用GBK编码(适配Windows)

                "-o",

                "${fileDirname}\\${fileBasenameNoExtension}.exe"

            ],

            "options": {

                "cwd": "${fileDirname}"

            },

            "problemMatcher": [

                "$gcc"

            ],

            "group": {

                "kind": "build",

                "isDefault": true

            },

            "detail": "调试器生成的任务。"

        }

    ],

    "version": "2.0.0"

}

然后将这四个代码中的路径换成你实际的路径,如果你是按照本文的路径来的,直接使用即可。

此时再点调试,等待代码运行一会后:

如图所示,说明已成功了。此时点击确定:

没有出现乱码,正常显示中文即完成了。

http://www.dtcms.com/a/437975.html

相关文章:

  • 【升级安卓9教程】华为Q21_Q21A_Q21C_Q21AQ_Q21AE_hi3798mv200线刷烧录包带adb权限
  • vite vue 打包后运行,路由首页加载不出来
  • 《C++ STL:vector类(下)》:攻克 C++ Vector 的迭代器失效陷阱:从源码层面详解原理与解决方案
  • 微软Agent框架深度解析:重新定义AI应用开发的革命性架构
  • 微信看视频打赏网站建设项目立项流程图
  • 爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
  • [工作流节点8] 更新记录节点应用案例 —— 业务自动化的关键一环
  • MySQL表的内连和外连
  • go 基础
  • 鸿蒙开发3--UI布局(玩转鸿蒙的Row、Column与Stack容器)
  • 为什么要给企业建设网站做单位网站
  • ML4T - 第7章第8节 利用LR预测股票价格走势Predicting stock price moves with Logistic Regression
  • 性能之巅:大小水管问题深究
  • css选择器(继承补充)
  • 郑州高新区做网站的公司聚美优品的电子商务网站建设论文
  • uniapp集成语音识别与图片识别集成方案【百度智能云】
  • SpringCloud API Gateway2.0如何解决docker中应用间IP漂移的正确手法
  • 鸿蒙Next中使用mDNS发现局域网服务:完整指南与实战
  • 长泰建设局网站注册网站多久
  • 孝感网站开发江苏建设服务信息网站
  • 数据分析概述与环境搭建
  • 易语言网站怎么做帕绍网站建设
  • vue3父组件和子组件之间传递数据
  • Coze源码分析-资源库-编辑工作流-前端源码-核心流程/API/总结
  • Netty服务器监听读写超时
  • PHP 中的正则表达式
  • Linux的Socket编程之UDP
  • 环境没有tomcat怎么演示自己做的网站动漫设计专业就业方向
  • 180课时吃透Go语言游戏后端开发7:Go语言中的函数
  • Python核心架构深度解析:从解释器原理到GIL机制全面剖析