似乎無法使錯誤消失。錯誤如下。我已經看過Google了,但仍然想不起來。并不是我不是Cpp的新手,但有一段時間沒有被它弄糊涂了。奇怪的是它與Windows中的G ++一起使用...錯誤:[ze @ 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;}幫助#ifndef HELP_H#define HELP_Hclass Help { public: Help(); ~Help(); void sayName(); protected: private:};#endif // HELP_H幫助文件#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;}標簽c ++ g ++
3 回答

蝴蝶不菲
TA貢獻1810條經驗 獲得超4個贊
您應該將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

繁星淼淼
TA貢獻1775條經驗 獲得超11個贊
我的Linux Lubuntu發行版遇到了同樣的問題,它為我的構造函數,析構函數創建了問題,但無法識別它們。
實際上,如果僅將三個文件全部一起編譯,則此操作不可用。因此,保存所有文件后,只需執行以下操作:
$ g++ main.cpp Help.h Help.cpp
$ ./a.out
./a.out是Linux的可執行文件,很抱歉,我對Windows不了解。并且您的程序將順利運行。
- 3 回答
- 0 關注
- 1113 瀏覽
添加回答
舉報
0/150
提交
取消