我是编程新手,想尝试用于C ++开发的VS Code。我收到此错误,我无法在线找到解决方案:
clang:错误:链接器命令失败,退出代码为1(使用-v查看调用) 终端进程以退出代码终止:1
我有一个带有函数定义的cpp文件和一个带有类和声明的头文件,还有一个int主测试文件。
所以它是一个链接器问题。 VSC将我引导到c_cpp_properties.json,我不知道接下来要做什么来修复它。我也在Mac btw上。
任何人都可以帮我吗?
答案 0 :(得分:1)
我想我找到了答案!
好像我一直在寻找错误的地方。你可以编辑task.json选项,它会询问“command”,然后添加你正在使用的每个翻译单元或cpp文件名。就像我的一样
“g ++ -g main.cpp func.cpp -o main”
这告诉编译器编译main.cpp和func.cpp文件,然后允许链接器完成它的工作。
答案 1 :(得分:1)
这将在当前文件夹中构建所有.cpp文件,这是vs代码tash.json "${fileDirname}/*.cpp"
中的示例设置。请在这里找到doc。
"tasks": [
{
"type": "shell",
"label": "clang++ build active file",
"command": "/usr/bin/clang++",
"args": [
"-g",
"${fileDirname}/*.cpp",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
答案 2 :(得分:0)
我知道这对其他人来说可能听起来很奇怪,但无论是 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