.libファイルと.objファイルはどのように相互に関連していますか?彼らの目的は何ですか?.libは単なる.objファイルのコレクションですか?もしそうなら、.objは.lib内に保存され、.objは不要になりますか?
3 に答える
通常、ファイルはオブジェクトファイル.obj
を参照します。これは、コンパイルされた形式のソースファイルです。たとえば、aとはandを生成します。main.cpp
foo.cpp
main.obj
foo.obj
次に、それらをリンクするのはリンカーの仕事です。これにより、でmain.obj
定義された関数に到達でき、foo.obj
その逆も可能です。リンカは、.lib
(.a
または.exe
、、、、または.dll``などの)バイナリファイルを出力します。
したがって、大まかに言うと、そうです、バイナリ出力(.lib
あなたの場合)はリンクされ.obj
たファイルのコレクションです。コンパイルが終了し、ライブラリを使用したい場合は、にリンクする他のプログラムのみが必要です.lib
。これら.obj
は中間ファイルと見なされるものであり、リンクが完了した後は必要ありません。
これは状況によって異なります。.libファイルが静的ライブラリである場合、それは多かれ少なかれ.objファイルのコレクションにすぎません。DLLを作成または使用している場合、.libファイルは単なるインポートライブラリであり、関連するDLLで使用可能なシンボルに関する情報が含まれています。
はい、.libファイルは単なる.objファイルのコレクションです。.objファイルの内容については何も行われていません。最も良い例えは、.zipアーカイブです。はい。.libには.objファイルの逐語的なコピーが含まれているため、.libの作成後に.objファイルを削除できます。
.libを使用して製品を配布する場合は、通常、そのうちの4つを作成する必要があることに注意してください。デバッグとリリースのビルド、およびCRTの2つのフレーバー(/MTと/MD)。