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

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

相关推荐
哇咔咔哇咔7 小时前
使用Markdown编写适用于GitHub的README.md文件的目录结构
vscode·markdown
Rverdoser8 小时前
Android Studio 多工程公用module引用
android·ide·android studio
4U2479 小时前
Linux入门之vim
linux·编辑器·vim·命令模式·底行模式
free_girl_fang11 小时前
高效作业之Mybatis缓存
java·ide·缓存·mybatis
星寂樱易李12 小时前
pycharm 使用
ide·python·pycharm
羊小猪~~12 小时前
神经网络基础--什么是神经网络?? 常用激活函数是什么???
人工智能·vscode·深度学习·神经网络·机器学习
Liquor141912 小时前
vim 编辑器
java·linux·c语言·开发语言·python·编辑器·vim
skywalk816312 小时前
三周精通FastAPI:33 在编辑器中调试
python·编辑器·fastapi
Eiceblue13 小时前
Python 在PDF中绘制形状(线条、矩形、椭圆形等)
vscode·python·pycharm·pdf
心安成长13 小时前
IntelliJ IDEA快速接入LLMs大模型API
java·ide·intellij-idea