为了账号安全,请及时绑定邮箱和手机立即绑定

G ++ Cpp中的“未定义的引用”

G ++ Cpp中的“未定义的引用”

C++
繁星点点滴滴 2019-11-20 14:20:48
似乎无法使错误消失。错误如下。我已经看过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 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

g ++ main.cpp Help.cpp


您必须告诉编译器您要编译的所有文件,而不仅仅是第一个。


查看完整回答
反对 回复 2019-11-20
?
蝴蝶不菲

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


查看完整回答
反对 回复 2019-11-20
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

我的Linux Lubuntu发行版遇到了同样的问题,它为我的构造函数,析构函数创建了问题,但无法识别它们。


实际上,如果仅将三个文件全部一起编译,则此操作不可用。因此,保存所有文件后,只需执行以下操作:


$ g++ main.cpp Help.h Help.cpp

$ ./a.out

./a.out是Linux的可执行文件,很抱歉,我对Windows不了解。并且您的程序将顺利运行。


查看完整回答
反对 回复 2019-11-20
  • 3 回答
  • 0 关注
  • 1000 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信