概要
DLL (Dynamic Loadable Library)。UNIXプラットフォームの「Shared Library」に相当する機能。
Windowsにおいて、複数のアプリケーションソフトが共通して利用するような汎用性の高いプログラムを部品化してファイルとして保存しておき、
必要に応じてメモリに呼び出して利用する手法。また、そのようにして利用されるプログラム部品のこと。
WindowsはOSとしての機能の多くをDLLとして提供しており、基本的なアプリケーションソフトならば標準のDLLが持つ機能を呼び出すだけで構築できることも多い。
メリット
- 関数、データ及びリソースを複数のアプリケーションから共有できる
- アプリケーションの機能を追加or修正を行う場合,アプリケーションの再ビルドを行わず,DLLのみの交換で保守が可能になる
DLL探索順序
- アプリケーションが読み込まれたディレクトリ
- 現在のディレクトリ
- Windowsシステム ディレクトリ(GetSystemDirectory()で取得可能)
- Windowsディレクトリ(GetWindowsDirectory()で取得可能)
- PATH環境変数に設定されているディレクトリ (PATH確認方法)
PATH設定方法
Windows7の場合
マイコンピューターのプロパティからこの画面を表示して、環境変数ボタンを押下する。
Pathが設定されている項目を選択し、編集ボタンを押下する。
Pathを編集することで、新しいPathを設定する。
DLLのリソースを利用する
文字列の場合
リソースDLLで使用しているresource.hをインクルードする。
#include "..\Samp\resource.h"
モジュールインスタンスをロードする。
HMODULE m_hModule = ::LoadLibraryEx(_T("Samp.dll"), NULL, 0);
既にロードしている場合
HMODULE m_hModule = ::GetModuleHandle(_T("Samp.dll");
文字列リソースを取得する。
int nSize = 32;
[[CString]] str = _T("");
TCHAR* lpszBuff = str.GetBuffer(nSize-1);
int nLen = ::LoadString(m_hModule, IDS_STRING1, lpszBuff, nSize);
str.ReleaseBuffer();
モジュールインスタンスを開放する。
::FreeLibrary(m_hModule);
アイコンの場合
リソースDLLで使用しているresource.hをインクルードする。
#include "..\Samp\resource.h"
モジュールインスタンスをロードする。
HMODULE m_hModule = ::LoadLibraryEx(_T("Samp.dll"), NULL, 0);
既にロードしている場合
HMODULE m_hModule = ::GetModuleHandle(_T("Samp.dll");
文字列リソースを取得する。
HICON m_hIcon = ::LoadIcon(m_hModule, MAKEINTRESOURCE(IDC_ICON1));
モジュールインスタンスを開放する。
::FreeLibrary(m_hModule);
コメント
最終更新:2010年08月28日 15:07