8

.libファイルと.objファイルはどのように相互に関連していますか?彼らの目的は何ですか?.libは単なる.objファイルのコレクションですか?もしそうなら、.objは.lib内に保存され、.objは不要になりますか?

4

3 に答える 3

12

通常、ファイルはオブジェクトファイル.objを参照します。これは、コンパイルされた形式のソースファイルです。たとえば、aとはandを生成します。main.cppfoo.cppmain.objfoo.obj

次に、それらをリンクするのはリンカーの仕事です。これにより、でmain.obj定義された関数に到達でき、foo.objその逆も可能です。リンカは、.lib.aまたは.exe、、、、または.dll``などの)バイナリファイルを出力します。

したがって、大まかに言うと、そうです、バイナリ出力(.libあなたの場合)はリンクされ.objたファイルのコレクションです。コンパイルが終了し、ライブラリを使用したい場合は、にリンクする他のプログラムのみが必要です.lib。これら.objは中間ファイルと見なされるものであり、リンクが完了した後は必要ありません。

于 2010-01-23T03:51:00.343 に答える
2

これは状況によって異なります。.libファイルが静的ライブラリである場合、それは多かれ少なかれ.objファイルのコレクションにすぎません。DLLを作成または使用している場合、.libファイルは単なるインポートライブラリであり、関連するDLLで使用可能なシンボルに関する情報が含まれています。

于 2010-01-23T03:57:37.807 に答える
1

はい、.libファイルは単なる.objファイルのコレクションです。.objファイルの内容については何も行われていません。最も良い例えは、.zipアーカイブです。はい。.libには.objファイルの逐語的なコピーが含まれているため、.libの作成後に.objファイルを削除できます。

.libを使用して製品を配布する場合は、通常、そのうちの4つを作成する必要があることに注意してください。デバッグとリリースのビルド、およびCRTの2つのフレーバー(/MTと/MD)。

于 2010-01-23T11:43:35.817 に答える