web-dev-qa-db-ja.com

.expの使用方法と.libと.dllの違いは何ですか?

コンパイルおよびリンク中に、.expの使用とは何ですか? .libと.dllの違いは何ですか? .libが使用され、プログラムの実行時にリンクと.dllが使用されることは知っています。しかし、.libと.dllの違いは何ですか?

.libファイルには、.dllファイルからの関数のコードが含まれていませんか? 2つの別々のファイルを使用する必要性は何ですか?

どうか明らかにしてください。

67

DLLのインポートライブラリの場合、.libファイルにはnotに実際のコードが含まれています。これは基本的に、関連するDLLの関数のリストのみを含みます-リンカーがライブラリへの参照を埋め込むのに十分ですDLL 、それ以外はあまりありません。

.expファイルはエクスポートファイルです。基本的には.libファイルとほぼ同じです。これは(少なくとも主に)循環依存がある場合に使用されます。たとえば、実行可能ファイルのプラグインとして機能するDLLがあるとします。実行可能ファイルは、プラグインDLLで使用するためにいくつかのエクスポートされた関数を提供しますが、プラグインの一部の機能(たとえば、プラグインをロードして初期化するため)。

DLLは、実行可能ファイルが.libファイルを提供するように構築されるまでリンクしません-しかし、実行可能ファイルはDLLが構築されるまでリンクしません.libファイルを提供します。依存関係を解除するには、実行可能ファイルに対してリンカーを実行しますが、DLLの.libファイルが見つからないために失敗しますが、willは.expを生成します次に、実行可能ファイルの.expファイルに対してDLLをリンクします。次に、リンクを再実行して、DLLの.libファイルを使用して実行可能ファイルを作成できます。

92
Jerry Coffin