c++ - 我使用 gcc 错了吗?

标签 c++ gcc

刚开始使用 C++,我就遇到了无穷无尽的麻烦。似乎无论我做什么,我都会遇到很多错误。我已经开始编译教程中的示例代码,但即使是示例代码也无法编译。例如,代码位于: http://www.cppgameprogramming.com/cgi/nav.cgi?page=arrayclasses

当我尝试:

$ g++ main.cpp -o dog

它说:

> main.cpp: In function 'int main()': main.cpp:18:15: warning: deleting
> array 'Dog myDogs [5]'
> C:\Users\bob-pc\Appdata\Local\Temp\ccTXXCOB.o:main.cpp:(.text+0x21):
> undefined rference to 'Dog::Dog()' C:\Users\bob-pc\Appdata\Local\Temp\ccTXXCOB.o:main.cpp:(.text+0x59):
> undefined rference to 'Dog::setAge(int)' C:\Users\bob-pc\Appdata\Local\Temp\ccTXXCOB.o:main.cpp:(.text+0x88):
> undefined rference to 'Dog::getAge()' collect2: Id returned 1 exit status

这不是我第一次尝试直接复制示例代码并编译它。即使在我复习了语法之后我也遇到了很多麻烦,但我似乎无法让标题和库正常工作。非常感谢任何帮助。

最佳答案

你必须在编译中包含dog.cpp:

g++ main.cpp dog.cpp -o dog

或者,您可以将dog.cpp 自身编译成目标文件,并将其包含在最终编译中:

g++ dog.cpp -c -o dog.o

g++ main.cpp dog.o -o dog

关于c++ - 我使用 gcc 错了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6977492/

相关文章:

c++ - 如果用两个变量或一个变量和一个数字文字进行加法,为什么从 C++ 调用的汇编函数会在标志中给出不同的结果?

c++ - 无效的模板相关成员函数模板推导 - 认为我正在尝试使用 std::set

c++ - 使用私有(private)复制/移动构造函数进行聚合初始化

c++ - 'g++' 不是内部或外部命令,也不是可运行的程序或批处理文件。

gcc - 如何选择GCC使用的汇编器?

c++ - 转换运算符重载歧义,编译器不同

c++ - 是否有任何 g++ 选项可以转储类布局和 vtables?

c++ - 为什么在多线程中没有收到发出的信号?

c++ - 基于命名空间 typedefs 原始类型的成员函数重载

c++ - 新运营商崩溃