似乎无法让错误消失 . 错误如下 . 我看过谷歌仍然无法搞清楚 . 这不像我是Cpp的新手,但有一段时间没有被它愚弄 .
Weird thing is it worked with G++ in Windows...
错误:
-
[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;
}
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;
}
3 回答
g main.cpp Help.cpp
您必须告诉编译器您希望它编译的所有文件,而不仅仅是第一个 .
您应该将help.o添加到您的g行:
通过将其拆分为两行,可以节省编译时间(如果是较大的项目),因为只有在更改时才能编译
help.cpp
.make
和Makefile
用得好将为您节省很多麻烦:我的Linux Lubuntu发行版遇到了同样的问题,它为我的构造函数,析构函数创建了问题,它没有识别它们 .
实际上,如果你只是 compile all of the three files together. ,这就会消失 . 所以,一旦你保存了所有文件,就这样做:
./a.out是Linux的可执行文件,抱歉,但我不知道Windows . 而且你的程序会顺利运行 .