C++ 编译器不正确地将文件包含在同一目录中

C++ 编译器不正确地将文件包含在同一目录中,c++,gcc,compiler-errors,C++,Gcc,Compiler Errors,第一次使用堆栈溢出。 我试图练习面向对象的抽象和接口。我一直无法让程序编译,我的程序如下 main.cpp #包括“Spells.h” #包括 int main() { 魔法咒语; std::cout您没有将Spell.cpp传递到g++ 使用您提供的选项,g++将尝试编译其参数中列出的文件,并将生成的对象文件链接在一起以生成最终的可执行文件。但是,由于从未编译过Spell.cpp,链接器无法找到Spell::Spell或Spell:~Spell的定义de> 最简单的修复方法是向g++提供所有翻

第一次使用堆栈溢出。 我试图练习面向对象的抽象和接口。我一直无法让程序编译,我的程序如下

main.cpp

#包括“Spells.h”
#包括
int main()
{
魔法咒语;

std::cout您没有将
Spell.cpp
传递到
g++

使用您提供的选项,
g++
将尝试编译其参数中列出的文件,并将生成的对象文件链接在一起以生成最终的可执行文件。但是,由于从未编译过
Spell.cpp
,链接器无法找到
Spell::Spell
Spell:~Spell的定义de>

最简单的修复方法是向
g++
提供所有翻译单元,例如

g++ main.cpp Spell.cpp -o main 

这些是链接器错误,您正在编译main.cpp,没有错误。您缺少的是在Spell.cpp中编译和链接。标题似乎与问题无关
g++     main.cpp  -lcrypt -lcs50 -lm -o main
/tmp/ccnXk1TN.o: In function `main': 
main.cpp:(.text+0x20): undefined reference to `spell::spell()'
main.cpp:(.text+0x3f): undefined reference to `spell::~spell()'
main.cpp:(.text+0x64): undefined reference to `spell::~spell()'
collect2: error: ld returned 1 exit status
<builtin>: recipe for target 'main' failed
make: *** [main] Error 1
g++ main.cpp Spell.cpp -o main