[解決済み】DLLファイルとは一体何ですか?
質問
DLLファイルは具体的にどのように動作するのですか?非常に多くのDLLがあるようですが、それらが何であり、どのように動作するのかわかりません。
で、どうするんだ?
解決方法は?
DLLとは何ですか?
DLL(Dynamic Link Libraries)はEXEに似ていますが、直接実行することはできません。 Linux/Unixの.soファイルに似ています。 つまり、DLLはMSによる共有ライブラリの実装なのです。
DLLは、ファイル形式そのものがEXEと同じと言えるほど、EXEと似ています。 EXEもDLLもPE(Portable Executable)ファイル形式がベースになっています。 DLL には、COM コンポーネントや .NET ライブラリを含めることもできます。
DLLには何が入っているのですか?
DLL には、EXE や他の DLL が使用する関数、クラス、変数、UI、リソース (アイコン、画像、ファイルなど) が含まれています。
ライブラリの種類
事実上すべてのオペレーティング・システムでは、2種類のライブラリが存在します。 スタティック・ライブラリとダイナミック・ライブラリです。 Windowsでは、ファイルの拡張子は次のとおりです。スタティック・ライブラリ(.lib)とダイナミック・ライブラリ(.dll)です。 主な違いは、静的ライブラリはコンパイル時に実行ファイルにリンクされるのに対し、動的リンクライブラリは実行時までリンクされないことです。
スタティック・ライブラリとダイナミック・ライブラリの詳細はこちら
静的ライブラリは、モジュール(EXEまたはDLL)の内部に直接埋め込まれるため、通常、コンピュータ上で静的ライブラリを目にすることはありませんが。 ダイナミック・ライブラリは、スタンドアロン・ファイルです。
DLLはいつでも変更でき、EXEが明示的にDLLをロードしたときのみ、実行時にロードされます。 静的ライブラリは、EXE 内で一度コンパイルされると変更することができません。 DLL は、EXE 自体を更新することなく、個別に更新することができます。
DLLを読み込む。
プログラムは、起動時、Win32 API の LoadLibrary を介して、または他の DLL の依存関係にある場合に DLL をロードします。 関数を読み込むにはGetProcAddressを、リソースを読み込むにはLoadResourceを使用します。
さらに読む
関連
-
[解決済み] Xcopyのエラーメッセージ「Sharing Violation」が誤っている。
-
[解決済み] DLLとLIBファイル - 何が、なぜ?
-
[解決済み] npm' は内部または外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
[解決済み] Windowsからリモートサーバーへscpでローカルファイルをコピーする [終了しました]。
-
[解決済み] Git for Windows でファイル名が長すぎる
-
[解決済み] Git から認証情報を削除する
-
[解決済み] コンパイル済み実行ファイルにDLLを埋め込む
-
[解決済み】PowerShellスクリプトを実行する方法
-
[解決済み】Windowsのバッチファイル:.batと.cmdの違いは?
-
[解決済み】SO_REUSEADDRとSO_REUSEPORTはどう違うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] UnicodeDecodeError: 'charmap' コーデックは、位置YのバイトXをデコードできません:文字は<undefined>にマップされます。
-
[解決済み] 依存関係ウォーカー:DLLが見つからない
-
[解決済み] ポート8005はWindows 10のシステムプロセスで使用されます。
-
[解決済み] ssh_dispatch_run_fatal:message authentication code incorrect unable to ssh jupyter notebook on remote server.入力のMACが破損している。
-
.NET フレームワークのインストールに失敗しました 0x800c0006 解決方法
-
[解決済み] Cygwinを使用してWindowsにsshpassをインストールする方法は?
-
[解決済み] CygwinにCMakeをインストールする方法は?
-
[解決済み] npm' は内部または外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
[解決済み] 管理者として実行せずにネットワークドライブにマップするためのBATファイル
-
[解決済み] XCOPYです。BATCHでプロンプトを出さずに全てを上書きする