c++ Visual Studio代码叮当声错误:在Mac上,链接器命令失败,退出代码为1

xesrikrc  于 2023-01-06  发布在  Mac
关注(0)|答案(5)|浏览(180)

我是编程新手,想试用VS Code for C++开发。我遇到了这个错误,我无法在线找到解决方案如何修复:
叮当声:错误:linker命令失败,退出代码为1(使用-v查看调用)终端进程终止,退出代码为:1
我得到了一个包含函数定义的cpp文件,一个包含类和声明的头文件,还有一个int主测试文件。
所以这是一个链接器的问题。VSC引导我到c_cpp_properties. json,我不知道下一步该怎么做来修复它。顺便说一句,我也在Mac上。
有人能帮我吗?

ryhaxcpt

ryhaxcpt1#

这将建立所有的.cpp文件在您当前的文件夹,这里是样本设置在VS代码task.json"${fileDirname}/*.cpp"。请在这里找到文档。

"tasks": [
    {
        "type": "shell",
        "label": "clang++ build active file",
        "command": "/usr/bin/clang++",
        "args": [
            "-g",
            "${fileDirname}/*.cpp",
            "-o",
            "${fileDirname}/${fileBasenameNoExtension}"
        ],
rdrgkggo

rdrgkggo2#

我想我找到答案了!
看起来我一直在错误的地方寻找。你应该编辑task.json选项,它要求“命令”,然后添加你正在使用的每个翻译单元或cpp文件名。就像我的那样
“g++ -g主文件. cpp函数. cpp-o主文件”
这将告诉编译器编译main.cpp和func.cpp文件,然后允许链接器完成其工作。

chhqkbe1

chhqkbe13#

我知道这对其他人来说可能听起来很奇怪,但不管是tasks.json还是c_cpp_properties.json,我都无法让它协调。结果,由于VSCode内部的一些奇怪原因(我使用的是OSx),当我试图编译我的Person.h文件的复制版本时,链接器一直说:

clang: error: linker command failed with exit code 1 (use -v to see invocation)

我从Person.h复制并粘贴到一个新的Person1.h,并更新了max.cpp和Person.cpp中的头文件#include "Person1.h",它工作了。

// Wouldn't work with Person.h copied over, but did work once Person1.h was configured
g++ -g -I./Header ./Source/max.cpp ./Source/Person.cpp
7kjnsjlb

7kjnsjlb4#

也是这样解决的。

// a.hpp file

#pragma once

class a {

    public:

    a();
    ~a();
};

#include "a.cpp"

// a.cpp file

#include "a.hpp"

a::a() {}

a::~a() {}
li9yvcax

li9yvcax5#

我也遇到了这个问题,我意识到我的VS代码终端在错误的目录中,所以我单击-ls查看它在哪个目录中,在VS终端中,我刚刚通过键入-cd [directory_name]将目录更改为正确的目录,它运行得非常好

相关问题