PDA

View Full Version : استفاده از dll



meysamg_alone
پنج شنبه 24 اردیبهشت 1388, 01:23 صبح
سلام به همه
یه dll هست تویه vb6 به صورت تابع های api تعریف میشه من می خواستم بدونم که این تابع در vc++ به چه شکل تعریف میشه یه مثال بزننین

meysamg_alone
پنج شنبه 24 اردیبهشت 1388, 21:08 عصر
کسی نمیخواد جواب منو بده !:ناراحت:

Keyhan Clever
پنج شنبه 24 اردیبهشت 1388, 22:18 عصر
آخه ویژوال بیسیک چه ربطی به ++C داره ؟
هرکی که سی بلده که وی بی بلد نیست
در ضمن سوالتو روشن تر بگو
دقیقا میخوای چکار کنی ؟

tdkhakpur
جمعه 25 اردیبهشت 1388, 00:54 صبح
سلام:
اکثر کامپایلرها برای خودشون گزینه ای برای ساخت dll داره و شما میتونید با اون dll رو بسازید .
ولی نحوه فراخوانی اون مثل vb هست. ولی شما برای مثال زیر باید تابعتون رو در فایل dll تعریف و سپس کامپایل کنید


extern "C" __declspec(dllexport) void MyProc(void);
void MyProc (void)
{
}

به فرض توی dll ساخته شده تابعی به اسم MyProc هست با کد زیر میتونی فراخوایش کنی.


void RunDllProc( char *DllFileName )
{
HMODULE hmodule;
void (*AppProc)(void);
hmodule = LoadLibrary(DllFileName);
if( hmodule == NULL) return ;
AppProc = (void (*)(void)) GetProcAddress(hmodule, "_MyProc");
if( AppProc == NULL ) { FreeLibrary(hmodule); return; }
(*AppProc)();
FreeLibrary(hmodule);
}

meysamg_alone
جمعه 25 اردیبهشت 1388, 01:37 صبح
ممنون از لطفتون ولی فکر کنم این جوری درست باشه


void RunDllProc( char *DllFileName )
{
WNDPROC d;
HMODULE hmodule;
void (*AppProc)(void);
hmodule = LoadLibraryA(DllFileName);
if( hmodule == NULL) return ;
d =(WNDPROC) GetProcAddress(hmodule, "MessageBoxA");
if( d == NULL ) { FreeLibrary(hmodule); return; }
//(*AppProc)();
CallWindowProcA(d,NULL,0,0,NULL);
FreeLibrary(hmodule);
}

به هر حال ممنون اگه تایپ شما نبود من متوجه نمیشدم