6

ハウディの人々。現在、「共有」ライブラリ (Windows では別名 DLL) を作成中です。これは、日時機能のために「Boost C++」ライブラリに依存します。Boost インストール (Boostpro 経由で実行) のlibディレクトリに、いくつかの DLL ファイルと LIB ファイルがあることに気付きました。OK、必要だと思ったので、IDE のライブラリ依存関係に追加しました。

今私がしているのは、boost date time ライブラリを使用するコードを記述し、共有ライブラリを作成して、スタンドアロンの実行可能ファイルから使用することです。作成した共有ライブラリをファイルではなく実行可能フォルダーにコピーしたばかりですが、機能しboost_date_time-vc100-mt-1_47.dllます。変。ここで、Boost の DLL/ライブラリ依存関係をプロジェクトから削除し、共有ライブラリをビルドします。それはまだ動作します。

私は少し混乱しています。Boost ライブラリが実際にはヘッダーのみである場合、Boostpro インストールに datetime およびその他のブースト部分用の *.lib および *.dll ファイルがあるのはなぜですか? これらのブースト ライブラリがとにかく私の共有ライブラリにコンパイルされることを考えると、それらを使用したいシナリオはありますか?

私が十分に明確であることを願っています。さらに明確にする必要がある場合はお知らせください。また、FWIW、私はこれらすべてにEclipse CDT + MingWを使用しています。

4

1 に答える 1

4

Boostのほとんどの部分はヘッダーのみですが、他のいくつかの部分(少なくともファイルシステムとiostreams IIRC)はライブラリをリンクする必要があります。つまり、Boostのどの部分を使用するかによって異なります。リンクが必要なパーツは、Boostライブラリのドキュメントページに記載されています。

一部のライブラリは自動リンクを使用します。つまり、ヘッダーファイルには、適切なライブラリにリンクするための命令をオブジェクトファイルに埋め込むためのコンパイラ固有のコードが含まれています。これは、コンパイラでサポートする必要のある便利な機能です。ただし、gccツールチェーン(MingWを含む)はそれをサポートしていません。

于 2012-08-18T19:46:16.047 に答える