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

似乎无法使错误消失。错误如下。我已经看过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_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;

}

标签c ++ g ++ 


繁星点点滴滴
浏览 1011回答 3
3回答

慕容3067478

g ++ main.cpp Help.cpp您必须告诉编译器您要编译的所有文件,而不仅仅是第一个。

蝴蝶不菲

您应该将help.o添加到您的g ++行中:g++ -c help.cpp -o help.og++ help.o main.cpp通过将其分为两行,可以节省编译时间(对于大型项目),因为您help.cpp只能在更改时进行编译。make并且Makefile使用得好会为您节省很多头痛:#Makefileall: mainmain: help main.cpp&nbsp; &nbsp; g++ -o main help.o main.cpphelp: help.cpp&nbsp; &nbsp; g++ -c -o help.o help.cpp

繁星淼淼

我的Linux Lubuntu发行版遇到了同样的问题,它为我的构造函数,析构函数创建了问题,但无法识别它们。实际上,如果仅将三个文件全部一起编译,则此操作不可用。因此,保存所有文件后,只需执行以下操作:$ g++ main.cpp Help.h Help.cpp$ ./a.out./a.out是Linux的可执行文件,很抱歉,我对Windows不了解。并且您的程序将顺利运行。
打开App,查看更多内容
随时随地看视频慕课网APP