インターフェイス用の .h ファイルと実装用の .inl ファイルを含むプロジェクトからスタティック ライブラリをコンパイルしていますが、Visual Studio 2008 が .lib を生成しません。考えられる理由は何ですか?
2 に答える
1
ライブラリがヘッダーのみのライブラリ(すべてが#included)の場合、コンパイルするものは何もありません。コンパイラは、ソースコード(.cppファイル、.cなど)のみをコンパイルします。すべてのコードがテンプレートである場合、コードに.cppファイルがない場合は、ソースを生成していません。ユーザーはいくつかのヘッダーを含めるだけです。
たとえば、Boostのほとんどはヘッダーのみです。単にそれを含めるだけです。あなたはそれのどれにもリンクしていません。
言い換えると、すべてのコードがインラインである場合、静的なコードはありません。したがって、静的ライブラリはありません。
于 2011-11-15T07:29:47.260 に答える
0
コンパイラは .inl ファイルを .h ファイルと同じように扱います - 別々にコンパイルしません。それらをコンパイルするには、それらを .cpp ファイルに含める必要があります。
于 2011-11-15T07:41:08.323 に答える