1

インターフェイス用の .h ファイルと実装用の .inl ファイルを含むプロジェクトからスタティック ライブラリをコンパイルしていますが、Visual Studio 2008 が .lib を生成しません。考えられる理由は何ですか?

4

2 に答える 2

1

ライブラリがヘッダーのみのライブラリ(すべてが#included)の場合、コンパイルするものは何もありません。コンパイラは、ソースコード(.cppファイル、.cなど)のみをコンパイルします。すべてのコードがテンプレートである場合、コードに.cppファイルがない場合は、ソースを生成していません。ユーザーはいくつかのヘッダーを含めるだけです。

たとえば、Boostのほとんどはヘッダーのみです。単にそれを含めるだけです。あなたはそれのどれにもリンクしていません。

言い換えると、すべてのコードがインラインである場合、静的なコードはありません。したがって、静的ライブラリはありません。

于 2011-11-15T07:29:47.260 に答える
0

コンパイラは .inl ファイルを .h ファイルと同じように扱います - 別々にコンパイルしません。それらをコンパイルするには、それらを .cpp ファイルに含める必要があります。

于 2011-11-15T07:41:08.323 に答える