我是编程新手,想试用VS Code for C++开发。我遇到了这个错误,我无法在线找到解决方案如何修复:叮当声:错误:linker命令失败,退出代码为1(使用-v查看调用)终端进程终止,退出代码为:1我得到了一个包含函数定义的cpp文件,一个包含类和声明的头文件,还有一个int主测试文件。所以这是一个链接器的问题。VSC引导我到c_cpp_properties. json,我不知道下一步该怎么做来修复它。顺便说一句,我也在Mac上。有人能帮我吗?
ryhaxcpt1#
这将建立所有的.cpp文件在您当前的文件夹,这里是样本设置在VS代码task.json"${fileDirname}/*.cpp"。请在这里找到文档。
task.json
"${fileDirname}/*.cpp"
"tasks": [ { "type": "shell", "label": "clang++ build active file", "command": "/usr/bin/clang++", "args": [ "-g", "${fileDirname}/*.cpp", "-o", "${fileDirname}/${fileBasenameNoExtension}" ],
rdrgkggo2#
我想我找到答案了!看起来我一直在错误的地方寻找。你应该编辑task.json选项,它要求“命令”,然后添加你正在使用的每个翻译单元或cpp文件名。就像我的那样“g++ -g主文件. cpp函数. cpp-o主文件”这将告诉编译器编译main.cpp和func.cpp文件,然后允许链接器完成其工作。
chhqkbe13#
我知道这对其他人来说可能听起来很奇怪,但不管是tasks.json还是c_cpp_properties.json,我都无法让它协调。结果,由于VSCode内部的一些奇怪原因(我使用的是OSx),当我试图编译我的Person.h文件的复制版本时,链接器一直说:
tasks.json
c_cpp_properties.json
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",它工作了。
Person1.h
#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
7kjnsjlb4#
也是这样解决的。
// a.hpp file #pragma once class a { public: a(); ~a(); }; #include "a.cpp" // a.cpp file #include "a.hpp" a::a() {} a::~a() {}
li9yvcax5#
我也遇到了这个问题,我意识到我的VS代码终端在错误的目录中,所以我单击-ls查看它在哪个目录中,在VS终端中,我刚刚通过键入-cd [directory_name]将目录更改为正确的目录,它运行得非常好
5条答案
按热度按时间ryhaxcpt1#
这将建立所有的.cpp文件在您当前的文件夹,这里是样本设置在VS代码
task.json
"${fileDirname}/*.cpp"
。请在这里找到文档。rdrgkggo2#
我想我找到答案了!
看起来我一直在错误的地方寻找。你应该编辑task.json选项,它要求“命令”,然后添加你正在使用的每个翻译单元或cpp文件名。就像我的那样
“g++ -g主文件. cpp函数. cpp-o主文件”
这将告诉编译器编译main.cpp和func.cpp文件,然后允许链接器完成其工作。
chhqkbe13#
我知道这对其他人来说可能听起来很奇怪,但不管是
tasks.json
还是c_cpp_properties.json
,我都无法让它协调。结果,由于VSCode内部的一些奇怪原因(我使用的是OSx),当我试图编译我的Person.h
文件的复制版本时,链接器一直说:我从
Person.h
复制并粘贴到一个新的Person1.h
,并更新了max.cpp和Person.cpp中的头文件#include "Person1.h"
,它工作了。7kjnsjlb4#
也是这样解决的。
li9yvcax5#
我也遇到了这个问题,我意识到我的VS代码终端在错误的目录中,所以我单击-ls查看它在哪个目录中,在VS终端中,我刚刚通过键入-cd [directory_name]将目录更改为正确的目录,它运行得非常好