1

対応するヘッダーファイルを含む非常に単純なC++ファイルMultiplier.cppがあり、そこから次のコマンドを使用してライブラリを作成しました。

$ g++ -o Multiplier.o -c Multiplier.cpp
$ ar cr libMultiplier.a Multiplier.o

新しいディレクトリに、クラスCalculator.cppを使用する(対応するヘッダーファイルを含む)を作成しました。MultiplierヘッダーファイルCalculator.hには、対応する`#include"Multiplier.h"があります

ヘッダーファイルCalculator.hには対応するものがあります#include "Multiplier.h"

作成したライブラリをこのディレクトリにコピーしCalculator.cpp、次のコマンドを使用してコンパイルしようとしました。

$ g++ -o Calculator Calculator.cpp -L. -lMultiplier

これは私にこれらのエラーを与えます:

In file included from Calculator.cpp:1:
Calculator.h:1:24: error: Multiplier.h: No such file or directory
In file included from Calculator.cpp:1:
Calculator.h:6: error: ISO C++ forbids declaration of ‘Multiplier’ with no type
Calculator.h:6: error: expected ‘;’ before ‘&’ token
Calculator.h:8: error: expected `)' before ‘&’ token
Calculator.cpp:5: error: redefinition of ‘class something::Calculator’
Calculator.h:5: error: previous definition of ‘class something::Calculator’`

私は長い間検索しましたが、何が起こっているのか理解できません。GCC4.2.1を使用しています。

4

1 に答える 1

2

インクルードファイルMultiplier.hは別のフォルダにあります。コンパイラがそれをどのように見つけると思いますか?-Iコマンドラインフラグを使用してインクルードファイルのパスを指定するか、#includeディレクティブでパスを使用して、ファイルの場所をコンパイラに通知する必要があります。

于 2012-07-03T11:10:43.333 に答える