“undefined reference to” in G++ Cpp

心已入冬 提交于 2019-11-26 03:45:04

问题


Can\'t seem to get the errors to go away. Errors are below. I have looked on google and still can\'t figure it out. It is not like I am new to Cpp, but have not fooled with it in a while.

Weird thing is it worked with G++ in Windows...

Errors:

  • [ze@fed0r! ---**__*]$ g++ main.cpp
  • /tmp/ccJL2ZHE.o: In function `main\':
  • main.cpp:(.text+0x11): undefined reference to `Help::Help()\'
  • main.cpp:(.text+0x1d): undefined reference to `Help::sayName()\'
  • main.cpp:(.text+0x2e): undefined reference to `Help::~Help()\'
  • main.cpp:(.text+0x46): undefined reference to `Help::~Help()\'
  • collect2: ld returned 1 exit status

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;
}

回答1:


g++ main.cpp Help.cpp

You have to tell the compiler all the files that you want it to compile, not just the first one.




回答2:


You should add help.o to your g++ line:

g++ -c help.cpp -o help.o
g++ help.o main.cpp

By splitting it to two lines you can save compilation time (in case of larger projects), because you can compile help.cpp only when it was changed. make and Makefile used well will save you a lot of headache:

#Makefile
all: main

main: help main.cpp
    g++ -o main help.o main.cpp

help: help.cpp
    g++ -c -o help.o help.cpp



回答3:


I had the same problem with my Linux Lubuntu distro and it was creating the problem for my constructor, destructor, it is not recognizing them.

Actually, this goes off if you just compile all of the three files together. So, once you saved all your files, just do this:

$ g++ main.cpp Help.h Help.cpp
$ ./a.out

./a.out is the executable file for the Linux,Sorry but I don't know about the Windows. And your program would run smoothly.



来源:https://stackoverflow.com/questions/6978241/undefined-reference-to-in-g-cpp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!