VSCode 中将头文件和头文件函数分离,编译主函数跳出 undefined reference to 的问题解决

VSCode 编写 C++ (.h,.cpp 文件分离)代码,编写完成后,编译遇到了编译错误 undefined reference to xxx。

开始还以为使用了 -std=c++20 而不能使用 #include "xxx.h" 方式头文件,但仔细一想虽然引入了 import,也不至于向前兼容都成了问题😊。

接着觉得可能是没有编译全部的 .cpp 文件,只编译了当前执行的 main.cpp文件,导致找不到对应的类。试着 #include "xxx.cpp",就解决了问题,但也不能这样改呀,是不。

这时问题已经明了了,在 tasks.json 文件里配置了单文件编译,问题就出在这里。修改tasks.json文件中args栏的 {file}` `为 {fileDirname}\*.cpp。

至此,问题解决。

配置多 tasks,并设置快捷键:

bash 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "GCC Compile Multi-Cpps",
            "command": "C:\\CplusEnv\\mingw64\\bin\\g++.exe",
            "args": [
                "-std=c++20",
                "-fdiagnostics-color=always",
                "-g",
                //"${file}", // 编译当前打开(编辑)的 .cpp 文件
                "${fileDirname}/*.cpp",   // 编译当前打开的文件所在目录下的所有.cpp 文件
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "compiler: C:\\CplusEnv\\mingw64\\bin\\g++.exe"
        },
        {
            "type": "cppbuild",
            "label": "GCC Compile Single-Cpp",
            "command": "C:\\CplusEnv\\mingw64\\bin\\g++.exe",
            "args": [
                "-std=c++20",
                "-fdiagnostics-color=always",
                "-g",
                "${file}", // 编译当前打开(编辑)的 .cpp 文件
                //"${fileDirname}/*.cpp",   // 编译当前打开的文件所在目录下的所有.cpp 文件
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                //"isDefault": true
            },
            "detail": "compiler: C:\\CplusEnv\\mingw64\\bin\\g++.exe"
        },
    ]
}

配置快捷键:

bash 复制代码
// Place your key bindings in this file to override the defaults
[
    {
        "key": "ctrl+1",                    // 配置快捷键
        "command": "workbench.action.tasks.runTask",    // runtask
        //"args": "GCC Compile Multi-Cpps"    //  task 的名称,对应定义的label,不定义更换,可以弹框选择对应的task
    },
    {
        "key": "ctrl+2",
        "command": "workbench.action.tasks.runTask",
        "args": "GCC Compile Single-Cpp"
    }
]

按 ctrl+1 后出现

按 ctrl+2 直接以单文件方式编译。

为什么只编译不运行呢?等待后续解决。

相关推荐
VidDown2 天前
VidDown 工具站:免费、本地优先的开发者工具箱
javascript·编辑器·音视频·视频编解码·视频
摇滚侠2 天前
IDEA 创建 Java 项目 手动整合 SSM 框架
java·ide·intellij-idea
霸道流氓气质2 天前
Trae IDE 新手入门指南
ide
VidDown2 天前
显卡处理视频技术详解:从硬解码到 NVENC,GPU 如何让视频处理起飞?
javascript·编辑器·音视频·视频编解码·视频
夜猫逐梦2 天前
【UE基础】03.蓝图与编辑器工作流
编辑器·ue·蓝图·ue编辑器
VidDown2 天前
视频帧率技术详解:从 24fps 到 120fps,帧率如何影响你的观看体验?
网络·网络协议·编辑器·音视频·视频编解码·视频
爱就是恒久忍耐2 天前
VSCode里如何比较2个branch
ide·vscode·编辑器
意法半导体STM322 天前
【官方原创】如何为STM32CubeMX2配置Visual Studio Code配置方案
vscode·stm32·单片机·嵌入式硬件·策略模式·stm32cubemx·嵌入式开发
bloglin999992 天前
vscode中可视化的合并分支,在“合并编辑器中解析”中“与基线进行比较”是什么意思
ide·vscode·编辑器
终将老去的穷苦程序员2 天前
IntelliJ IDEA 的安装教程
java·ide·intellij-idea