20180325

DLL について

DLL について


【外部リンク】
https://support.microsoft.com/ja-jp/help/815065/what-is-a-dll

概要
この資料では、ダイナミック リンク ライブラリ (DLL) の概要と、DLL を使用するときに発生する可能性があるさまざまな問題について説明します。

また、独自の DLL を開発する際に考慮すべき高度な問題についても説明します。 DLL の概要としては、ダイナミック リンクの手法、DLL の依存関係、DLL エントリ ポイント、DLL 関数のエクスポート、DLL のトラブルシューティング ツールについて説明します。

この資料の最後では、DLL と Microsoft .NET Framework アセンブリとのハイレベルな比較を行います。
はじめに・・・

以下に、Windows オペレーティング システムに DLL として実装されているファイルの例を挙げます。 
ActiveX コントロール (.ocx) ファイル
ActiveX コントロールには、予定表から日付を選択するための予定表コントロールなどがあります。
コントロール パネル (.cpl) ファイル
.cpl ファイルには、コントロール パネルに配置されるアイテムなどがあります。 各アイテムは、特殊な DLL です。
デバイス ドライバ (.drv) ファイル
デバイス ドライバには、プリンタでの印刷を制御するプリンタ ドライバなどがあります。
・・・
DLL のトラブルシューティング ツール

DLL に関する問題のトラブルシューティングのために、いくつかのツールが用意されています。 ここでは、そのうちの一部のツールを紹介します。
Dependency Walker

Dependency Walker を使用することで、プログラムが使用しているすべての DLL を文書化できます。 これは、将来発生する可能性のある DLL の問題の防止や解決に役立つことがあります。 Dependency Walker は、Microsoft Visual Studio 6.0 のインストール時に、次のディレクトリに配置されます。
drive\Program Files\Microsoft Visual Studio\Common\Tools
DLL Universal Problem Solver

DLL Universal Problem Solver (DUPS) ツールは、DLL 情報の監査、比較、文書化、および表示に使用されます。 DUPS ツールは、以下のユーティリティで構成されています。 
Dlister.exe
コンピュータのすべての DLL を列挙し、テキスト ファイルまたはデータベース ファイルに情報を記録します。
Dcomp.exe
2 つのテキスト ファイルに列挙された DLL を比較し、その相違点を格納した 3 つめのテキスト ファイルを作成します。
Dtxt2DB.exe
Dlister.exe ユーティリティおよび Dcomp.exe ユーティリティを使用して作成されたテキスト ファイルを dllHell データベースに読み込みます。
DlgDtxt2DB.exe
Dtxt2DB.exe ユーティリティのグラフィカル ユーザー インターフェイス (GUI) バージョンを提供します。
DUPS ツールの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
247957 [SAMPLE] DUPS.exe を使用して DLL の互換性に関する問題を解決する方法
DLL Help データベース
DLL Help データベースは、Microsoft ソフトウェア製品によってインストールされた特定のバージョンの DLL を見つけるのに役立ちます。 DLL Help データベースの詳細については、次のマイクロソフト Web サイトを参照してください。
http://support.microsoft.com/dllhelp/
DLL の開発
以下に、DLL エントリ ポイント関数のコード例を示します。
BOOL APIENTRY DllMain(
HANDLE hModule,// Handle to DLL module
DWORD ul_reason_for_call,// Reason for calling function
LPVOID lpReserved ) // Reserved
{
switch ( ul_reason_for_call )
{
case DLL_PROCESS_ATTACHED:
// A process is loading the DLL.
break;
case DLL_THREAD_ATTACHED:
// A process is creating a new thread.
break;
case DLL_THREAD_DETACH:
// A thread exits normally.
break;
case DLL_PROCESS_DETACH:
// A process unloads the DLL.
break;
}
return TRUE;
}

関連情報
DLL および .NET Framework アセンブリの詳細については、次のマイクロソフト Web サイトを参照してください。
DLL Help データベース
http://support.microsoft.com/dllhelp

DLL Hell の終焉
http://msdn.microsoft.com/ja-jp/library/ms811694.aspx

アプリケーションで共有する Side-by-Side コンポーネントの実装 (拡張)
http://msdn.microsoft.com/ja-jp/library/ms811700.aspx

Windows XP で分離アプリケーションと Side-by-Side アセンブリをビルドし、サービスを提供する方法
http://msdn.microsoft.com/ja-jp/library/ms997620.aspx

.NET Framework による導入の単純化と DLL Hell の解消
http://msdn.microsoft.com/ja-jp/library/ms973843.aspx/

.NET Framework 開発者ガイド : 共通言語ランタイムのアセンブリ
http://msdn.microsoft.com/ja-jp/library/hk5f40ct.aspx

実行時のダイナミック リンク
http://msdn.microsoft.com/ja-jp/library/ms685090.aspx

スレッド ローカル ストレージ
http://msdn.microsoft.com/ja-jp/library/ms686749.aspx
Last Updated: 2017/05/04
--

注目の投稿

USB デバイスが削除されました

microsoftアカウントデバイスの削除 USB デバイスが削除されましたと表示される https://answers.microsoft.com/ja-jp/windows/forum/all/windows/7f1eb20a-400e-477f-86cb-b67e9244d...

人気の投稿