[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置-问题解决和补充]

这篇具有很好参考价值的文章主要介绍了[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置-问题解决和补充]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景

  1. 在使用VSCode配置C++的开发环境时《VisualStudioCode_C/C++开发环境配置[1]》,编译时会发现找不到标准库的std::mutexstd::thread的声明,而这两个的头文件已经引入,什么情况?

  2. 无论如何MinGW都是Windows上验证开发C++特性比较新的工具,就是配置麻烦点。其实免费的话配置麻烦是可以接受的。想避免麻烦的话可以直接使用vsstudio的社区版。

说明

  1. MingGW的预编译版本官方推荐的是在niXman mingw-builds-binaries下载。这个版本我们发现有posixwin32版本,如果下载使用的是win32版本,那么如果要使用标准库thread,必须安装了gthread第三方库。而这个库一般是和gtk一起安装的,很少会用到,就会导致用不了<thread>。解决办法是使用posix线程的版本。如:
https://github.com/niXman/mingw-builds-binaries/releases/download/13.2.0-rt_v11-rev0/x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0.7z
  1. 如果配置了MinGWbin目录在环境变量path,就不会出现链接问题。如果像我那样不想配置环境变量,需要模拟普通用户一样的环境,集成的终端就会出现以下错误。
Build finished with error(s).
E:\software\MinGW-w64\x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0\bin\g++.exe -std=c++11 -IE:\software\MinGW-w64\x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0\lib\gcc\x86_64-w64-mingw32\13.2.0\include\c++ -g -o E:\Project\Sample\08.cpp-test\test-synchronized\Debug-MinGW\test-synchronized.exe E:\Project\Sample\08.cpp-test\test-synchronized\test-synchronized\test-synchronized.cpp E:\Project\Sample\08.cpp-test\test-synchronized\test-synchronized\bas_lock.cpp

如果想看具体的信息,那么在外部终端运行,会弹出以下错误。在mingw安装目录下搜索这个cc1plus.exe命令,之后用Dependencies发现它缺少libwinpthread-1.dll文件,而这个文件是在mingw的安装目录bin下。因此编译链接需要有这个bin在搜索路径里,可以在tasks.json里设置当前编译目录是..\bin目录。 方法是在options->cwd里设置。

[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置-问题解决和补充],开发工具,vscode,c语言,c++,编译配置,编译报错

{
	"version": "2.0.0",
	"tasks": [
		{
			...
			"options": {
				"cwd": "E:\\software\\MinGW-w64\\x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0\\bin"
			},
			...
			
		}
	]
}
  1. Debug运行的时候如果报错无法调试,也是因为没有配置gdb的搜索路径,gdb也是需要依赖bin目录下的其他文件。所以需要在launch.json配置environment属性值。
ERROR: Unable to start debugging. Unexpected GDB output from command "-exec-run". During startup program exited with code 0xc000007b.
"environment": [{"name": "path","value": ";%path%;E:\\software\\MinGW-w64\\x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0\\bin"}],
  1. tasks.json里配置的编译参数,如果要编译多个文件,可以使用gcc的参数。 如果要从任意文件都可以按F5编译运行,那么就需要使用${workspaceFolder}变量[3]
"args": [
			"-std=c++11",
            "-IE:\\software\\MinGW-w64\\x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0\\lib\\gcc\\x86_64-w64-mingw32\\13.2.0\\include\\c++",
			"-g",
            "-o",
            "${workspaceFolder}\\Debug-MinGW\\test-synchronized.exe",
			"${workspaceFolder}\\test-synchronized\\test-synchronized.cpp",
			"${workspaceFolder}\\test-synchronized\\bas_lock.cpp"
		],

例子

  1. 这里是优化后的配置, 关键的3个文件,都需要放在.vscode目录下。 当然也可以自己配置执行Makefile的编译。

tasks.json 编译链接配置

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "test-synchronized",
			"command": "E:\\software\\MinGW-w64\\x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0\\bin\\g++.exe",
			"args": [
				"-std=c++11",
                "-IE:\\software\\MinGW-w64\\x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0\\lib\\gcc\\x86_64-w64-mingw32\\13.2.0\\include\\c++",
				"-g",
                "-o",
                "${workspaceFolder}\\Debug-MinGW\\test-synchronized.exe",
				"${workspaceFolder}\\test-synchronized\\test-synchronized.cpp",
				"${workspaceFolder}\\test-synchronized\\bas_lock.cpp"
			],
			"options": {
				"cwd": "E:\\software\\MinGW-w64\\x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0\\bin"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": "build",
			"detail": "compiler: g++.exe"
			
		}
	]
}

c_cpp_properties.json 智能感知声明跳转配置

{
    "configurations": [
        {
            "name": "MinGW-G++",
            "includePath": [
                "${workspaceFolder}/**",
                "E:\\software\\MinGW-w64\\x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0\\include",
                "E:\\software\\MinGW-w64\\x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0\\x86_64-w64-mingw32\\include",
                "E:\\software\\MinGW-w64\\x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0\\lib\\gcc\\x86_64-w64-mingw32\\13.2.0\\include\\c++",
                "E:\\software\\MinGW-w64\\x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0\\lib\\gcc\\x86_64-w64-mingw32\\13.2.0\\include",
                "E:/software/MinGW-w64/x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0/lib/gcc/x86_64-w64-mingw32/13.2.0/include/c++/x86_64-w64-mingw32"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.22621.0",
            "compilerPath": "E:\\software\\MinGW-w64\\x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0\\bin\\g++.exe",
            "cStandard": "c17",
            "cppStandard": "c++11",
            "intelliSenseMode": "windows-gcc-x64",
            "compilerArgs": []
        }
    ],
    "version": 4
}

launch.json 运行配置

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {  
            "name": "MinGW gdb launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}\\Debug-MinGW\\test-synchronized.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "externalConsole": false,
            "environment": [{"name": "path","value": ";%path%;E:\\software\\MinGW-w64\\x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0\\bin"}],
            "preLaunchTask": "test-synchronized",
            "MIMode": "gdb",
            "logging": {
                "moduleLoad": true,
                "trace": true
            },
            // "windows": {"options": {"env": {"path":"C:\\Windows;C:\\Windows\\System32;E:\\software\\cygwin64\\bin"}}},
            "miDebuggerPath": "E:\\software\\MinGW-w64\\x86_64-13.2.0-release-posix-seh-msvcrt-rt_v11-rev0\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "asdfas",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ] 
        } 
    ]
}

参考

  1. VisualStudioCode_C/C++开发环境配置

  2. niXman mingw-builds-binaries

  3. Visual Studio Code Variables Reference文章来源地址https://www.toymoban.com/news/detail-822701.html

到了这里,关于[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置-问题解决和补充]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VSCode + GCC编译器(MinGW)开发环境中文字符乱码问题踩坑与解决办法

    问题背景 在较长一段时间里,C/C++开发者所使用的集成开发环境(IDE)要么是比较重量级的 VS(Visual Studio) ,要么是 Codeblocks·、·Visual C++ 6.0 等轻量级IDE,又或者是诸如 notepad++、sublime text 等文本编辑器+ GCC编译器 +命令行工具的组合式开发环境。这几种开发方式要么太过庞

    2023年04月22日
    浏览(72)
  • Vue3通透教程【十五】补充TS开发环境搭建问题

    专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章,Vue 框架目前的地位大家应该都晓得,所谓三大框架使用人数最多,公司选型最多的框架,凉哥之前在文章中也提到过就是 Vue 框架之所以火起来的原因,和 Vue 框架相比其

    2024年02月15日
    浏览(36)
  • 【Unity 踩坑系列】配置VScode的C#环境自动下载 .NET Runtime Failed to download 问题解决后续!!!

    想必大家这几天肯定都被Vscode C#插件的自动下载.net runtime的问题所烦恼,之前我也出了一期文章是来解决这个问题的但是,只是解决了部分网友们的问题有部分网友还是会自动下载! 【Unity 踩坑系列】配置VScode环境Downloading the.NET Runtime Failed to download 之前没看过这篇解决方案

    2024年02月10日
    浏览(45)
  • [VSCode] Java开发环境配置

    1.1 安装 VSCode Visual Studio Code 官方下载 地址: 详细安装步骤这里不做赘述,可参考: VSCode安装教程(超详细) 1.2 安装 JDK JDK 指 Java开发工具包(Java Development Kit) ,是用于开发Java应用程序和小程序的跨平台软件开发环境。 它包含了 Java运行时环境(Java Runtime Environment) ,

    2024年02月03日
    浏览(55)
  • 配置VScode开发环境-CUDA编程

    如果觉得本篇文章对您的学习起到帮助作用,请 点赞 + 关注 + 评论 ,留下您的足迹💪💪💪 本文主要介绍VScode下的CUDA编程配置,因此记录以备日后查看,同时,如果能够帮助到更多人,也不胜荣幸。 compile_commands.json 文件能够有效提高一些工具(比如vscode)的代码跳转、补全

    2024年02月05日
    浏览(51)
  • C#配置开发环境使用vscode

    1、步骤 (1)下载安装.net (2)测试.net环境 (3)配置vscode的C# 2、操作 (1)下载安装.NET       1.1  简介: .NET是一个类似JDK的.NET SDK概念, 你可以理解为是一个跨平台的运行时环境(runtime) + 命令行等开发者工具的集合。下载链接: https://dotnet.microsoft.com/zh-cn/download        

    2024年02月11日
    浏览(49)
  • 【开发工具 - vscode】vscode配置C/C++环境

    这里教大家一种不常见的下载安装方式——直接到github上下载mingw-w64的压缩包。 首先,我们进入mingw-w64的官网(https://www.mingw-w64.org/) 可以点这里(https://github.com/niXman/mingw-builds-binaries/releases)直达github地址,这里只是告诉你这个git链接的来源 如果git访问不了的话,可以耐心

    2024年02月12日
    浏览(45)
  • VSCode配置C++开发环境:OpenCV

    最近在做深度学习的C++部署相关工作,于是写下这篇文档记录环境配置的过程。环境配置是一项非常繁琐的工作,无论从大学做相关作业还是到工作上。做这项工作需要技术的同时,还需要点运气。当然遇到无法解决的玄学问题,最终只有一个办法:重启设备。 本篇文章以环

    2024年02月08日
    浏览(101)
  • 使用VSCODE配置GO语言开发环境

    1. 安装GO SDK 官方下载地址是:golan.google.cn/dl 2. 安装完毕后,会自动在配置文件中加入一些内容,其中比较重要的三个是: GOROOT(具体GO语言在硬盘上安装的位置,比如D:/GO) GOPATH(未来使用go install安装第三方工具包时,都会安装在GOPATH指定文件夹下的src或bin目录下,比如

    2024年02月06日
    浏览(46)
  • VSCode 配置 Lua 开发环境(清晰明了)

    由于 AutoJS 学得已经差不多了,基本都会了,现在开始向其他游戏脚本框架进发, Lua 语言很强大 ,就不多说, 按键精灵、触动精灵等等都是用该语言编程脚本的,由于按键精灵、触动精灵 和 AutoJS 类似,不是说一样是因为按键精灵、触动精灵整合大漠插件等牛逼插件,控制

    2024年02月07日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包