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

似乎无法让错误消失。 错误如下。 我看过谷歌,仍然无法弄清楚。 这不像我是Cpp的新手,但一段时间没有被愚弄。

奇怪的是它在Windows中使用G ++ ...

错误:

  • [泽@ 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;
    }
    

    g ++ main.cpp Help.cpp

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


    你应该添加help.o到你的g ++行:

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

    通过将它分成两行,可以节省编译时间(如果是大型项目),因为只有在更改时才能编译help.cppmakeMakefile很好用会为你节省很多头痛:

    #Makefile
    all: main
    
    main: help main.cpp
        g++ -o main help.o main.cpp
    
    help: help.cpp
        g++ -c -o help.o help.cpp
    
    链接地址: http://www.djcxy.com/p/51559.html

    上一篇: "undefined reference to" in G++ Cpp

    下一篇: Template static variable