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

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

相关推荐
先跑起来再说18 小时前
Git 入门到实战:一篇搞懂安装、命令、远程仓库与 IDEA 集成
ide·git·后端·elasticsearch·golang·intellij-idea
嵌入小生00721 小时前
标准IO---核心函数接口延续(嵌入式Linux)
c语言·vscode·vim·嵌入式·小白·标准io·函数接口
LYOBOYI12321 小时前
vscode界面美化
ide·vscode·编辑器
浔川python社1 天前
关于浔川代码编辑器 v5.0 网页版上线时间的通知
编辑器
mailangduoduo1 天前
零基础教学连接远程服务器部署项目——VScode版本
服务器·pytorch·vscode·深度学习·ssh·gpu算力
浔川python社1 天前
浔川代码编辑器 v5.0 上线时间公布
编辑器
山峰哥1 天前
数据库工程与SQL调优——从索引策略到查询优化的深度实践
数据库·sql·性能优化·编辑器
Doro再努力1 天前
Vim 快速上手实操手册:从入门到生产环境实战
linux·编辑器·vim
Doro再努力1 天前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
骥龙2 天前
第六篇:AI平台篇 - 从Jupyter Notebook到生产级模型服务
ide·人工智能·jupyter