簡體   English   中英

Visual Studio Code clang 錯誤:linker 命令在 Mac 上失敗,退出代碼為 1

[英]Visual Studio Code clang error: linker command failed with exit code 1 on Mac

我是編程新手,想嘗試使用 VS Code 進行 C++ 開發。 我收到此錯誤,但無法在線找到解決方法:

clang:錯誤:linker 命令失敗,退出代碼為 1(使用 -v 查看調用)終端進程終止,退出代碼為:1

我得到了一個包含 function 定義的 cpp 文件和一個包含 class 和聲明的 header 文件以及一個 int 主測試文件。

所以這是一個 linker 問題。 VSC 將我定向到 c_cpp_properties.json,我不知道下一步該怎么做才能修復它。 順便說一句,我也在 Mac 上。

誰能幫我這個?

我想我找到了答案!

好像我一直在找錯誤的地方。 您應該編輯 task.json 選項,它要求“命令”,然后添加您正在使用的每個翻譯單元或 cpp 文件名。 就像我的一樣

"g++ -g main.cpp func.cpp -o main"

這告訴編譯器編譯 main.cpp 和 func.cpp 文件,然后允許鏈接器完成它的工作。

這將在當前文件夾中構建所有 .cpp 文件,這是 VS Code task.json "${fileDirname}/*.cpp"示例設置。 請在這里找到文檔

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

我知道這對其他人來說可能聽起來很奇怪,但無論是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

也通過這種方式解決了它。

// a.hpp file

#pragma once

class a {

    public:

    a();
    ~a();
};

#include "a.cpp"

// a.cpp file

#include "a.hpp"

a::a() {}

a::~a() {}

我也有這個問題,我意識到我在 VS Code 上的終端在錯誤的目錄中,所以我單擊 -ls 查看它在哪個目錄中,在 VS 的終端中,我剛剛將目錄更改為正確的目錄通過輸入 -cd [directory_name] 它運行得很好

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM