9

私はクローズド ソース ライブラリ (Activ Financial による) を使用しています。このライブラリには、ブースト ヘッダー ファイルとブースト ライブラリ ファイルの両方が含まれる API が含まれています。

既存のコードベースでも Boost を使用しており、既存のコードから Activ を使用する必要があります。

いくつかのポイント

  • Activ の使用をカプセル化して、Activ 部分全体が、Activ のヘッダーを一切公開しない、私が作成した単一のクラスになるようにすることができます。
  • この単一のヘッダー ファイルはブーストを何も使用しません
  • このようにして、コードの Activ 部分が Activ の Boost HPP ファイルを使用し、コードが Boost の HPP ファイルを使用するようにすることができます。

私の心配は、リンクすることです。Activ に依存するコードが Activ の Boost にリンクし、他のコードが自分の Boost にリンクしていることを確認するにはどうすればよいですか?

私は現在g ++を使用していますが、VS2008でもこれを行う予定です。以前は VS2008 で動作していましたが、すべてがどのようにリンクされているかわかりません。それが正しく行われていることを確認したいと思います。

動的ライブラリに Activ パーツをさらにカプセル化せずにそれを行う方法はありますか?

編集:

1 つには、私の最終製品は常に実行可能ファイルです。2 つ目は、自分自身を後押しするために静的にリンクすることです。Activ ライブラリには、Boost オブジェクト ライブラリの静的バージョンと動的バージョンの両方が含まれており、静的にリンクする予定です。

異なるブースト バージョンを使用するコード間で Boost オブジェクトを渡すことはありません。

問題は、1 つの cpp または.oファイルを1 つのライブラリ ファイル内のオブジェクトにリンクしてから、他のファイルが別のライブラリ ファイル.o内の同一のオブジェクトにリンクされるようにする方法です。これは可能ですか?

4

1 に答える 1

3

ライブラリは動的または静的に Boost にリンクしますか? 静的にリンクされている場合、ライブラリは DLL (declspec エクスポート) でシンボルを公開しますか?

ライブラリが静的にリンクされていて、シンボルが公開されておら、Boost データ構造 (smart_ptr、スレッドなど) をやり取りしない場合は、DLL で独自のバージョンの Boost ライブラリを安全に使用できます。

于 2010-12-01T06:37:43.413 に答える