gpt4 book ai didi

c++ - 无法在 VScode (macOS) 中将头文件链接到我的 main.cpp(clang 错误)

转载 作者:行者123 更新时间:2023-12-02 10:45:45 26 4
gpt4 key购买 nike

我正在尝试将一个定义了一个类的头文件和一个具有该类实际功能的 .cpp 文件链接到我的主 cpp 文件,但我收到此错误:
c++ DataMembers.cpp -o DataMembers
架构 x86_64 的 undefined symbol :
“Cat::eat()”,引用自:
_main 在 DataMembers-053507.o
“Cat::meow()”,引用自:
_main 在 DataMembers-053507.o
“Cat::sleep()”,引用自:
_main 在 DataMembers-053507.o
ld:未找到架构 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"程序编译没有任何问题!我只是不知道为什么?
我已经搜索了一个解决方案,但还没有找到任何解决方案!我需要能够使用我自己创建的头文件!
先谢谢各位 friend 了!

最佳答案

编译时确保引用所有 cpp源文件,以便它可以生成相应的目标文件。
您好像忘记引用 cat.cpp .编译器看到你包含了一个头文件,假设这个类的实现将在另一个 cpp 中。文件。因为您忘记引用所述文件,链接器会提示无法链接某些 undefined symbol 。
一旦包含 cat.cpp直接进入您的main.cpp ,您基本上将其所有内容都复制到了这个文件中,这意味着不再需要从另一个翻译单元链接实现。
简而言之:你需要告诉你的编译器 cat.cpp

关于c++ - 无法在 VScode (macOS) 中将头文件链接到我的 main.cpp(clang 错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64497651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com