| DLLの作成(3) |
// 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);
}
#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;
}