-1

重複の可能性:
未定義の参照

私のディレクトリには次のものがあります:

main.cpp
tree.cpp
tree.h

main.cppにtree.hを含めました

#include "tree.h"

次に、メイン関数で次のように記述します

tree* t=new tree()

コンパイルのために私はやります

g++ main.cpp

しかし、私はエラーがあります

undefined reference to `tree::tree()'

どうしたの?

4

3 に答える 3

7

Tree のソース コードもコンパイルしてリンクする必要があります。

$ g++ -c -o tree.o tree.cpp
$ g++ -o test main.cpp tree.o

アプリケーションを実行します。

$ ./test
于 2012-12-30T00:31:35.207 に答える
2

そのためのメイクファイルを自分で作成したい場合があります。メイク ファイルは、複数のファイル プログラムのコンパイルを自動化します。

たとえば、billz によって提案された行を含むファイル「makefile」を作成できます。

all:
    g++ -c -o tree.o tree.cpp
    g++ -o test main.cpp tree.o

次に、makemakefile のフォルダー内のターミナルから実行すると、allセクションが実行されます。

Makefile の詳細については、http: //www.cs.bu.edu/teaching/cpp/writing-makefiles/ を参照してください。

上記のコードはテストしていません。微調整が必​​要になる可能性があります。

于 2012-12-30T00:46:06.883 に答える
0

ヘッダーガードを入れて、こんな感じ

#ifndef NAME_H
#define NAME_H

//your codes

#endif
于 2012-12-30T01:47:04.747 に答える