7

エラーを解消することができないようです。エラーは以下のとおりです。私はグーグルを見ましたが、それでも理解できません。私がCppを初めて使用するわけではありませんが、しばらくの間、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;

}

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

3 に答える 3

15

g ++ main.cpp Help.cpp

最初のファイルだけでなく、コンパイルするすべてのファイルをコンパイラに通知する必要があります。

于 2011-08-08T05:59:33.753 に答える
8

g++行にhelp.oを追加する必要があります。

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

2行に分割することで、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
于 2011-08-08T06:00:36.367 に答える
0

Linux Lubuntuディストリビューションでも同じ問題が発生し、コンストラクタ、デストラクタに問題が発生していましたが、それらを認識していません。

実際、これは、3つのファイルすべてを一緒にコンパイルするだけでうまくいきます。したがって、すべてのファイルを保存したら、次のようにします。

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

./a.outはLinuxの実行可能ファイルです。申し訳ありませんが、Windowsについてはわかりません。そして、あなたのプログラムはスムーズに実行されます。

于 2018-08-24T09:47:59.813 に答える