他のプログラムのC++で書かれた共有ライブラリを使用しようとしています。私は共有ライブラリを行って、それが動作することをテストしました。C++でヘッダーファイルのない構造体と関数をリンクする
上記共有ライブラリは、他のライブラリに依存しています。私はこの問題を避けて、共有ライブラリをコンパイルしてリンカにその依存関係を見つける場所を教え、すべての依存関係を持つ共有ライブラリをフォルダに展開しました。
問題
私の問題はヘッダーファイルです。共有ライブラリで展開するヘッダーファイルがありますが、このヘッダーファイルにはサードパーティのヘッダーも含まれています。たとえば、私の共有ライブラリA
とそのヘッダファイルAH
があります。 AH
は、の定義を得るためにBH
とCH
のヘッダーファイルを含める必要があります。これは避けたいものです。
次に、解決策は、私が必要とするサードパーティの機能にextern
キーワードを使用することだと思います。この問題は、structs
(上記のサードパーティのヘッダファイルで宣言されている)の定義も必要であることです。したがって、extern
キーワードを使用してこの構造体定義を含めるにはどうすればよいですか?私がしたいことをするための良い方法はありますか?
ライブラリのユーザーはサードパーティの宣言について知っている必要がありますか?第三者タイプの価値を返すことはありますか? –
両方の質問には該当しません。 – Dan
サードパーティのタイプを内部的に使用しているのであれば、pimplを使用することができます。 –