2011-11-15 10 views
1

インターフェイスの.hファイルと実装の.inlファイルを含むプロジェクトから静的ライブラリをコンパイルしていますが、Visual Studio 2008は.libを生成していません。その理由は何ですか?Visual Studio 2008で静的ライブラリを作成するにはどうすればいいですか?

+0

"inlファイル"とはどういう意味ですか? –

+0

@Nicol Bolas:これらはインライン定義用の.inl拡張子のファイルです。 – sharptooth

答えて

1

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

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

別の言い方をすれば、コードがすべてインラインであれば、のいずれも静的ではありません。静的ライブラリはありません。

+0

+1コンパイルされたコードがないので、.libファイルがないように聞こえます – Ralf

0

.inlファイルは、.hファイルを扱うのと同じ方法で処理されます。別々にコンパイルしません。コンパイルするには、それらを.cppファイルに含める必要があります。

+0

動作しますが、この奇妙な警告が発生します: "警告LNK4221:パブリックシンボルが見つかりませんでした。アーカイブメンバーにアクセスできない " –

関連する問題