[英]"undefined reference to" using 'g++' to compile a C++ program
我似乎无法让错误消失。 错误如下。 我看过谷歌搜索,但我仍然无法弄清楚。 这不像我是 C++ 的新手,但我已经有一段时间没有玩弄它了。
奇怪的是它在 Windows 上与 g++ 一起工作......
使用错误:
g++ main.cpp
输出:
/tmp/ccJL2ZHE.o: 在函数
main': \ main.cpp:(.text+0x11): undefined reference to
main.cpp:(.text+0x1d): 未定义引用Help::sayName()' \ main.cpp:(.text+0x2e): undefined reference to
Help::~Help()'
main.cpp:(.text+0x46): undefined reference to `Help::~Help()'
collect2: ld 返回 1 个退出状态
#include <iostream>
#include "Help.h"
using namespace std;
int main () {
Help h;
h.sayName();
// ***
// ***
// ***
return 0;
}
#ifndef HELP_H
#define HELP_H
class 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;
}
利用
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
我的 Linux Lubuntu发行版也有同样的问题,它给我的构造函数和析构函数带来了问题。 它没有认出他们。
实际上,如果您只是将所有三个文件编译在一起,就会发生这种情况。 因此,一旦您保存了所有文件,只需执行以下操作:
g++ main.cpp Help.h Help.cpp
./a.out
./a.out是 Linux 的可执行文件。 抱歉,我不了解 Windows。 您的程序将运行顺利。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.