DLL


概要

DLL (Dynamic Loadable Library)。UNIXプラットフォームの「Shared Library」に相当する機能。
Windowsにおいて、複数のアプリケーションソフトが共通して利用するような汎用性の高いプログラムを部品化してファイルとして保存しておき、
必要に応じてメモリに呼び出して利用する手法。また、そのようにして利用されるプログラム部品のこと。
WindowsはOSとしての機能の多くをDLLとして提供しており、基本的なアプリケーションソフトならば標準のDLLが持つ機能を呼び出すだけで構築できることも多い。

メリット

  • 関数、データ及びリソースを複数のアプリケーションから共有できる
  • アプリケーションの機能を追加or修正を行う場合,アプリケーションの再ビルドを行わず,DLLのみの交換で保守が可能になる

DLL探索順序

  1. アプリケーションが読み込まれたディレクトリ
  2. 現在のディレクトリ
  3. Windowsシステム ディレクトリ(GetSystemDirectory()で取得可能)
  4. Windowsディレクトリ(GetWindowsDirectory()で取得可能)
  5. PATH環境変数に設定されているディレクトリ (PATH確認方法

PATH設定方法

Windows7の場合
マイコンピューターのプロパティからこの画面を表示して、環境変数ボタンを押下する。

Pathが設定されている項目を選択し、編集ボタンを押下する。

Pathを編集することで、新しいPathを設定する。

TOP

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);
TOP

コメント

名前:
コメント:
TOP

最終更新:2010年08月28日 15:07
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル