“在G ++ Cpp中未定义的引用”
似乎无法让错误消失。 错误如下。 我看了谷歌,仍然无法弄清楚。 这不像我对Cpp是新手,但是暂时还没有被愚弄。
奇怪的是它在Windows中使用G ++ …
错误:
- [泽@ fed0r! – – – ** _ _ *] $ g ++ main.cpp
- /tmp/ccJL2ZHE.o:在main函数中:
- main.cpp 🙁 .text + 0x11):未定义的引用“Help :: Help()”
- main.cpp 🙁 .text + 0x1d):未定义引用到`Help :: sayName()'
- main.cpp :(。text + 0x2e):未定义引用到`Help ::〜Help()'
- main.cpp 🙁 .text + 0x46):未定义引用到`Help ::〜Help()'
- collect2:ld返回1退出状态
main.cpp中
#include <iostream> #include "Help.h" using namespace std; int main () { Help h; h.sayName(); // *** // *** // *** return 0; }
Help.h
#ifndef HELP_H #define HELP_H class Help { public: Help(); ~Help(); void sayName(); protected: private: }; #endif // HELP_H
Help.cpp
#include <iostream> #include "Help.h" using namespace std; Help::Help() { // Constructor } Help::~Help() { // Destructor } void Help::sayName() { cout << " ***************" << endl; cout << " ************************************" << endl; cout << " ************" << endl; cout << " *********************" << endl; }
g ++ main.cpp Help.cpp
你必须告诉编译器你想要编译的所有文件,而不仅仅是第一个。
你应该添加help.o到你的g ++行:
g++ -c help.cpp -o help.o g++ help.o main.cpp
通过将它分成两行,可以节省编译时间(对于较大的项目),因为只有在更改时才能编译help.cpp
。 make
和Makefile
使用得很好会为你节省很多头痛:
#Makefile all: main main: help main.cpp g++ -o main help.o main.cpp help: help.cpp g++ -c -o help.o help.cpp