VCでDLLを作る
http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_DLL3.html
以下はそのまま抜粋
DLLの作成方法 1. DLLプロジェクトを生成する VC++の「ファイル」−「新規作成」メニューで新規作成ダイアログを開き、「プロジェクト」タブを選択する。 「Win32 Dynamic-Link Library」を選択し、プロジェクト名を「TestDLL」としてOKボタンを押す。 次の画面では「単純なDLLプロジェクト」を選択しOKボタンを押す。これでプロジェクトのスケルトンが完成する。 2. 関数を追加する ここでは、例としてメッセージボックスを表示する関数を追加してみる。 まず、stdafx.hファイルを開いて以下のように関数のプロトタイプを追加する。 // stdafx.hファイルでの記述 -------------------- ・・・・・・ #include <windows.h> // TODO: プログラムで必要なヘッダー参照を追加してください。 extern "C" __declspec(dllexport) void DisplayMessage(LPCTSTR lpszMessage); 次に、TestDLL.cppファイルにこの関数の実装を追加する。 extern "C" __declspec(dllexport) void DisplayMessage(LPCTSTR lpszMessage) { ::MessageBox(NULL, lpszMessage, "test", MB_OK); } 3. これでビルドすれば、TestDLL.dllは完成である。 作成したDLLを使う 1. プロジェクトを作成する。「Win32 Application」を選択し、プロジェクト名をTestDLLEXEとする。 次の画面では「単純なアプリケーション」を選択しOKボタンを押す。これでプロジェクトのスケルトンが完成する。 2. ソースファイルの記述 TestDLLEXE.cppを開き、以下のように記述する。 LoadLibrary関数の引数では先に作成したTestDLL.dllへのパスを指定すること。 #include "stdafx.h" // エクスポートされた関数と同じ型を定義する typedef void (*DISPLAYMESSAGE)(LPCTSTR); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // TODO: この位置にコードを記述してください。 HINSTANCE hDllInstance; DISPLAYMESSAGE DisplayMessage; // 関数アドレス // DLLを呼び出し側プロセスのアドレス空間内にマップする hDllInstance = ::LoadLibrary("..\\TestDLL\\Debug\\TestDLL.dll"); if( hDllInstance != NULL ) { // エクスポートされた関数のアドレスを取得 DisplayMessage = (DISPLAYMESSAGE)(::GetProcAddress(hDllInstance, "DisplayMessage")); if( DisplayMessage != NULL ) DisplayMessage("Hello!!"); } …… FreeLibrary(hDllInstance); return 0; } 3. プログラムの実行 ビルドして生成されたTestDLLEXE.exeを実行し、「Hello!!」というメッセージボックスが表示されれば成功である