mongii´ÔÀÇ Å°·Î°ÅÄڵ带 º¸°í Áú¹®ÀÔ´Ï´Ù...
¾Æ·¡ ۷ΰÅ.exeÀÇ WndProc()À» º¸¸é,
DLL TEST.dll¿¡¼ ¼±¾ðµÈ int WiseGuys(int a, int b)ÀÇ Çü½Ä¿¡ ¸ÂÃß¾î
int (*MyFunc)(int, int); ·Î ÇÔ¼öÆ÷ÀÎÅ͸¦ ¸¸µé°í
MyFunc = (int (*)(int, int))GetProcAddress(hinstDll, "WiseGuys"); ·Î WiseGuysÇÔ¼öÀÇ ÁÖ¼Ò¸¦ MyFuncÇÔ¼öÆ÷ÀÎÅÍ¿Í ¸ÅÄ¡½ÃŰ´Â °ÍÀº ÁüÀÛÇϰڴµ¥¿ä...
(int (*)(int, int))Àº ¾î¶² µ¿ÀÛÀ» ÇÏ´Â °ÇÁö¿ä?
ºÎµð ÀÚ¼¼ÇÑ ¼³¸íÀ» ºÎʵ叮°Ú½À´Ï´Ù! °¨»çÇÕ´Ï´Ù~
----------------------------< DLL TEST.dllÀÇ ÄÚµå >------------------------------
#include <windows.h>
__declspec(dllexport) int WiseGuys(int a, int b)
{
return a+b;
}
--------------------< ۷ΰÅ.exeÀÇ WndProcÀÇ ÄÚµå >--------------------------------
LRESULT CALLBACK WndProc( HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam )
{
static HINSTANCE hinstDll; // µ¿Àû ¶óÀ̺귯¸®¸¦ °¡¸®Å³ ÇÚµé.
int (*MyFunc)(int, int); // DLL¾ÈÀÇ WiseGuys ÇÔ¼ö¸¦ °¡¸®Å³ Æ÷ÀÎÅÍ.
char str[100]; // ¸Þ½ÃÁö Ãâ·Â¿¡ »ç¿ëÇÒ º¯¼ö.
switch( iMessage )
{
case WM_CREATE:
hinstDll = LoadLibrary("DLL TEST.dll"); // DLLÀ» ·ÎµåÇÑ´Ù.
if(!hinstDll){
MessageBox(hWnd, "DLL TEST.dllÀ» ·ÎµåÇÒ ¼ö ¾ø½À´Ï´Ù.", "¿À·ù", MB_OK);
ExitProcess(1);
}
MyFunc = (int (*)(int, int))GetProcAddress(hinstDll, "WiseGuys");
// WiseGuys ÇÔ¼ö¸¦ ·ÎµåÇÑ´Ù.
if(!MyFunc){
MessageBox(hWnd, "WiseGuys ÇÔ¼ö¸¦ ·ÎµåÇÒ ¼ö ¾ø½À´Ï´Ù.", "¿À·ù", MB_OK);
FreeLibrary(hinstDll);
ExitProcess(1);
}
wsprintf(str, "3 + 5´Â %d ÀÔ´Ï´Ù.", MyFunc(3, 5));
MessageBox(hWnd, str, "¾Ë¸²", MB_OK);
return 0;
case WM_DESTROY:
PostQuitMessage( 0 );
break;
}
return DefWindowProc( hWnd, iMessage, wParam, lParam );
}
|