2017-02-01 5 views
0

Googleロギングライブラリ(glog)を使ったA.dllライブラリがあります。今私は別のプロジェクトでこのライブラリを使いたいと思っています。私自身のプロジェクトではglogを使いたくありません。私はちょうどA.dllを使いたいのですが、コンパイル中にコンパイラはlogging.hヘッダを見つけることができないと言います!なぜこのライブラリを使用するには内部ヘッダーが必要ですか?

なぜこのようなことが起こりますか? A.dllが内部で使用するヘッダーで、glogではなくAのインターフェイスを使用します。私はA.hを含めるだけで十分だと思います。私はlogging.hは必要ありません。私が間違っている?何が問題なのか?

A.dllはMSVC++ 2015で構築されており、QT CreatorではMSVC++ 2015を使用しています。

+1

A.dllが別のライブラリに依存している場合、その依存関係なしで動作するようにA.dllを再構築することなく、その依存関係を取り除くことはできません。 –

+0

私はglogライブラリを持っており、glog dllを見つけるために私のプロジェクトを設定しました。私はlogging.hと他の全てのglogヘッダを持っています。しかし、私の質問は、私のプロジェクトでコンパイラがグロッグヘッダーを必要とするのはなぜですか? – payman

+0

おそらく、A.dllヘッダーファイルの1つにそれが必要ですか? –

答えて

1

あなたには、グロッグヘッダファイルがライブラリにどのようにそしてどこに含まれているかの証拠は含まれていません。
しかし、プロジェクトにライブラリを使用するために含まれている のパブリックライブラリヘッダファイルに#includeされているので、あなたはindentctlyグロッグヘッダ依存関係を取得します。

理由の1つは、Aライブラリの開発者が悪い仕事をし、内部のみの依存関係を隠すことに失敗したことです。

間接的なインクルード依存関係を克服するにはどうすればよいですか?
これは、ライブラリのヘッダがどのように書かれているか、あるいはあなたや元のAライブラリの開発者が内部の依存関係を避けるために変更できるかによって異なります。

関連する問題