1

複数のファイルで C++ プログラムを作成する方法を学習しているため、 http://www.learncpp.com/cpp-tutorial/19-header-files/の例から正確にコピーした単純なプログラムがあります。

プログラムはコンパイルされますが、ビルド時に次のエラーが表示されます。

/tmp/ccm92rdR.o: 関数 main 内: main.cpp:(.text+0x1a): `add(int, int)' への未定義の参照 collect2: ld が 1 つの終了ステータスを返しました

コードは次のとおりです。

main.cpp

#include <iostream>
#include "add.h" // this brings in the declaration for add()

int main()
{
    using namespace std;
    cout << "The sum of 3 and 4 is " << add(3, 4) << endl;
    return 0;
}

add.h

#ifndef ADD_H
#define ADD_H

int add(int x, int y); // function prototype for add.h

#endif

add.cpp

int add(int x, int y)
{
    return x + y;
}

なぜこれが起こるのか誰にも分かりますか?

どうもありがとうございました。

4

2 に答える 2

5

コードはほぼ完璧です。

に行を追加#include "add.h"add.cppます。

ファイルをまとめてコンパイルするg++ main.cpp add.cppと、実行可能ファイルが生成されますa.out

として実行可能ファイルを実行する./a.outと、「3 と 4 の合計は 7 です」という出力が生成されます (引用符なし)。

于 2013-04-04T03:03:14.163 に答える
0

多くの .c または .cpp ソースがあり、それらの一部がコンパイルされていない場合、未定義の参照が発生する可能性があります。

それを行う方法に関する1つの良い「段階的な」説明はここにあります

于 2013-04-08T11:44:34.190 に答える