0

ここの例に従ってください:http://www.learncpp.com/cpp-tutorial/19-header-files/

に関連しadd.hmain.cpp

main.ccをコンパイルしようとすると(別の拡張子を使用しただけです)、次のようになります。

/tmp/cckpbRW.o:main.cc:(.text+0x9d):undefined reference to 'add(int, int)' collect2: ld returned 1 exit status

この問題を解決するにはどうすればよいですか?

ありがとう。

4

2 に答える 2

3

mainオブジェクトをオブジェクトにリンクしなかったaddため、リンカが実行可能ファイルをビルドしようとすると、add(int, int)使用するシンボルの定義が見つかりません。

main次のように、オブジェクト、オブジェクトをコンパイルaddし、それらをリンクする必要があります。

g++ -c -o main.o main.cpp
g++ -c -o add.o add.cpp
g++ -o executable main.o add.o

また

g++ -o executable main.cpp add.cpp

これにより、add.cppとmain.cppが一緒にコンパイルされます

于 2011-01-21T15:31:58.243 に答える
1

2番目の.cppファイルを最終的な実行可能ファイルにリンクしていないようです。それらを同時にコンパイルしてリンクします。

$ c++ -Wall -Werror -pedantic -g -otest1 add.cpp main.cpp

または、それらを個別にコンパイルしてからリンクします。

$ c++ -Wall -Werror -pedantic -g -c main.cpp
$ c++ -Wall -Werror -pedantic -g -c add.cpp
$ c++ -Wall -Werror -pedantic -g -otest1 add.o main.o
于 2011-01-21T15:33:26.917 に答える