2012-01-27 5 views
0

私はWindows/Visual Studio IDEで小さなATL dllを開発していますが、私はC++/boostの方が比較的新しいです。リンカオプションの下にboost libディレクトリを追加し、追加のインクルードディレクトリとしてboostルートディレクトリを追加しました。私のコードでは、私はそれが好きで追加している:ブーストを使用している間だけヘッダーを使用すると、静的にリンクするのか、まったくリンクしないのでしょうか?

#include <boost/algorithm/string.hpp> 

は、これは静的にリンクされ、動的にリンクされた、あるいは全くリンクしませんか?

+4

Boost.StringAlgoはヘッダーのみです。ヘッダーのみは関連するリンクがないことを意味します。 – ildjarn

+0

そして、効果は静的リンクと同じです。 –

答えて

3

静的リンク、動的リンク、または全くリンクされませんか?

答えは「依存します」です。

ブーストが大きいです。ダグラス・アダムスのラインを盗むには、ブーストは "大きかった。本当に大きかった。あなたは信じられないだろう。

Boostの一部は、純粋にテンプレートとして実装されています。以前にコンパイルされ、ライブラリに格納されている関数への呼び出しはありません。 Boostのこれらの部分だけを使用すれば、Boostライブラリは必要ありません。

Boostの他の部分は、以前にコンパイルされてライブラリに格納されていた関数を呼び出します。あなたが(あるいはいくつかのシステム管理者が)動的ライブラリと静的ライブラリとしてBoostライブラリを構築したかどうか、そして(b)あなた(またはあなたのmakefile)がどのようにBoostライブラリを扱うようにリンカーに指示します。

2

を含めると、のヘッダは、コンパイルのためにソースファイルにそのコードを埋め込みます。

コードはリンクされますので、すべてのシンボルは同じですが、は別途リンクされていません

+0

ヘッダー内からリンクするファイルを指定するために使用できる '#pragma comment(lib、" foo.lib ")'のようなビジュアルスタジオには特別なものはありませんでしたか? – PlasmaHH

+0

@PlasmaHHはい、boostはヘッダーのみではないライブラリのためにそれを使用します。しかし、ほとんどのブーストライブラリはヘッダーのみです。 – bames53

+0

@ bames53:したがって、OPの質問に対する最良の答えは、彼が実際に使用するファイルに依存します...? – PlasmaHH

関連する問題