簡體   English   中英

無法在 VScode (macOS) 中將頭文件鏈接到我的 main.cpp(clang 錯誤)

[英]Can't link header files to my main.cpp in VScode (macOS) (clang error)

我正在嘗試將其中定義了類的頭文件和具有該類實際功能的 .cpp 文件鏈接到我的主 cpp 文件,但出現此錯誤:

c++ DataMembers.cpp -o DataMembers 架構 x86_64 的未定義符號:“Cat::eat()”,引用自:DataMembers-053507.o 中的 _main.o “Cat::meow()”,引用自:DataMembers-053507 中的 _main。 o “Cat::sleep()”,引用自:DataMembers-053507.old 中的 _main:找不到 x86_64 架構的符號 clang:錯誤:鏈接器命令失敗,退出代碼為 1(使用 -v 查看調用) make: *** [DataMembers] 錯誤 1

請注意,所有文件都存在於同一目錄中!

我的 main.cpp 代碼是:


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

using namespace std;

int main()
{
    Cat myCat;

    myCat.eat();
    myCat.meow();
    myCat.sleep();
}

我的 Cat.h 代碼:

#ifndef CAT_H_
#define CAT_H_

class Cat 
{
public:
    void meow();
    void sleep();
    void eat();
};

#endif

和 Cat.cpp 代碼是:


#include <iostream>
#include "Cat.h"
using namespace std;

void Cat::meow()
{
    cout << "Meowwwwww!" << endl;
    return;
}

void Cat::sleep()
{
    cout << "Zzz ... " << endl;
    return;
}

void Cat::eat()
{
    cout << "Num Nom Nom .. Yummy" << endl;
    return;
}

有趣的是,當我將 main.cpp 中的頭文件從#inclue "Cat.h"#include "Cat.cpp" ,程序編譯沒有任何問題! 我只是不知道為什么?

我已經搜索了解決方案,但還沒有找到! 我需要能夠使用我自己創建的頭文件!

先謝謝各位朋友了!

編譯時確保引用所有cpp源文件,以便它可以生成相應的目標文件。

你好像忘記引用cat.cpp 編譯器看到您包含一個頭文件,假設此類的實現將在另一個cpp文件中。 因為您忘記引用該文件,鏈接器會抱怨某些未定義的符號無法鏈接。

一旦您將cat.cpp直接包含到您的main.cpp ,您基本上將其所有內容復制到此文件中,這意味着不再需要從另一個翻譯單元鏈接實現。

簡而言之:你需要告訴你的編譯器關於cat.cpp

在 Cat.cpp 中你寫了 #include "cat.h" 但文件名是 "Cat.h" 所以你弄亂了大寫。

首先檢查您為哪個架構編寫了頭文件,如果它與主文件的架構相同,然后嘗試使用驅動器中的完整路徑,即使它不起作用,將您的頭文件路徑添加為附加包含目錄.

在 main.cpp 中試試這個

#include "Cat.cpp"

代替:

#include "Cat.h"

來源: 如何在 VS Code 中創建 C++ 項目並鏈接 main、functions 和 header?

暫無
暫無

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

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