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 直接以单文件方式编译。

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

相关推荐
莲动渔舟19 小时前
国产编辑器EverEdit - 扩展脚本:让EverEdit支持“批量查找”功能
编辑器·emeditor·notepad·everedit
rainFFrain20 小时前
单例模式与线程安全
linux·运维·服务器·vscode·单例模式
Liudef0621 小时前
deepseek v3-0324实现SVG 编辑器
开发语言·javascript·编辑器·deepseek
超级小的大杯柠檬水1 天前
修改Anaconda中Jupyter Notebook默认工作路径的详细图文教程(Win 11)
ide·python·jupyter
云心雨禅1 天前
Vim操作指令全解析
编辑器·vim·excel
色空大师1 天前
【idea】实用插件
java·ide·intellij-idea
suanday_sunny1 天前
VSCode运行,各类操作缓慢,如何清理
ide·vscode·编辑器
信计小白1 天前
vscode报Module containing this breakpoint has not yet loaded
ide·vscode·编辑器
Kusunoki_D1 天前
使用 VIM 编辑器对文件进行编辑
linux·编辑器·vim
向宇it1 天前
【零基础入门unity游戏开发——2D篇】2D 游戏场景地形编辑器——TileMap的使用介绍
开发语言·游戏·unity·c#·编辑器·游戏引擎