VSCODE C++多文件编译

一、创建多个源文件程序

1.stuinfo.h

// stuinfo.h

#ifndef STUINFO_H
#define STUINFO_H

#include <string>

// 定义 student 结构体
struct student {
    std::string name;
    int age;
    int score;
};

// 初始化学生信息的函数声明
void initStudent(student& stu);

// 打印学生信息的函数声明
void printStudent(const student& stu);

#endif

2.stuinfo.cpp

// stuinfo.cpp

#include "stuinfo.h"
#include <iostream>

// 初始化学生信息的函数定义
void initStudent(student& stu) {
    // 在这里初始化 stu
    stu.name = "Tom";
    stu.age = 18;
    stu.score = 90;
}

// 打印学生信息的函数定义
void printStudent(const student& stu) {
    std::cout << "name:" << stu.name << std::endl;
    std::cout << "age:" << stu.age << std::endl;
    std::cout << "score:" << stu.score << std::endl;
}

3.main.cpp

// main.cpp

#include "stuinfo.h"

int main() {
    // 声明并初始化 stu1
    student stu1;
    initStudent(stu1);

    // 调用 printStudent() 函数打印 stu1 的信息
    printStudent(stu1);

    return 0;
}

二、错误分析

正在启动生成...
D:\vscode\mingw64\bin\g++.exe -fdiagnostics-color=always -g F:\Desktop\CODE\separate\main.cpp -o F:\Desktop\CODE\separate\main.exe
D:/vscode/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\pc\AppData\Local\Temp\cclYZgRg.o: in function `main':
F:\Desktop\CODE\separate/main.cpp:8: undefined reference to `initStudent(student&)'
D:/vscode/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: F:\Desktop\CODE\separate/main.cpp:11: undefined reference to `printStudent(student const&)'
collect2.exe: error: ld returned 1 exit status

生成已完成,但出现错误。

 *  终端进程启动失败(退出代码: -1)。 
 *  终端将被任务重用,按任意键关闭。 

原因分析:vscode使用g++编译的时候默认只编译了单个文件main.cpp,所以没有将stuinfo.cpp进行编译,导致程序在链接的过程中找不到printStudent(student const&)函数的符号。

三、解决办法

打开tasks.json

将"${file}"修改为"${fileDirname}\\*.cpp",如图所示:

tasks.json完整代码:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "g++",
            "command": "g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}.exe"
            ],
            "problemMatcher": {
                "owner": "cpp",
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            },
            "group": "build"
        },
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "D:\\vscode\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${fileDirname}\\*.cpp",
               //"${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ]
}

修改后运行结果如下:

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
VSCode中进行C++多文件编译可以按照以下步骤进行操作: 1. 确保您已安装C++扩展:在VSCode中,点击左侧的扩展图标(四个方块),并搜索并安装由Microsoft提供的"C++"扩展。 2. 在项目文件夹中创建源文件:在VSCode中,打开您的C++项目文件夹,并在其中创建您的C++源文件。可以使用`.cpp`扩展名来保存源文件。 3. 创建一个构建任务:在VSCode中,使用快捷键`Ctrl + Shift + B`(Windows/Linux)或者`Cmd + Shift + B`(Mac)来打开构建任务菜单。如果是第一次使用,VSCode会提示您选择一个构建系统。选择"C++"来生成一个默认的构建任务。 4. 配置构建任务:VSCode会在项目文件夹中创建一个`tasks.json`文件,您可以在其中配置构建任务。根据您的项目需要,可以配置多个构建任务。例如,如果您有多个源文件需要编译,您可以在`tasks.json`文件中指定它们的编译命令和依赖关系。 5. 运行构建任务:在VSCode中,使用快捷键`Ctrl + Shift + B`(Windows/Linux)或者`Cmd + Shift + B`(Mac)选择您要运行的构建任务。 6. 查看输出信息:构建任务成功运行后,将在VSCode的终端中显示构建输出的信息。您可以查看编译错误、警告或生成的可执行文件等信息。 请注意,具体的步骤和配置可能因您的项目和开发环境而有所不同。您可能需要根据实际情况自定义构建任务和编译选项。 希望这些步骤能帮助您在VSCode中成功进行C++多文件编译。如有任何问题,请随时向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值