ورود

View Full Version : سوال: Dynamic Link Library In VC++ Win32



hi.alir
شنبه 17 مهر 1389, 17:31 عصر
من خیلی در این مورد جست و جو کردم، ولی اطلاعات مورد نیازم رو به دست نیاوردم.
می خواستم بدونم که چطوری می تونم یه Dll درست کنم که توش Class ها، توابع، متغیر ها و چیز میز های دیگه رو تعریف کنم؟
و البته چطوری باید از اون Dll استفاده کنم؟
جست و جو های من فقط تا اینجا جواب داد:



#include <Windows.h>

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
//TODO: Init Code
break;

case DLL_THREAD_ATTACH:
//TODO: Thread-specific init code
break;

case DLL_THREAD_DETACH:
//TODO: Thread-specific cleanup code
break;

case DLL_PROCESS_DETACH:
//TODO: Cleanup code
break;
}

return TRUE;
}


نمی دونم کد بالا درست هست یا نه.
در مورد DLL_THREAD_DETACH و DLL_THREAD_ATTACH و DLL_PROCESS_DETACH هم مشکل دارم.

r00tkit
چهارشنبه 05 آبان 1389, 19:09 عصر
شما کدی که نوشتی فقط یه اینتری پواینت برای dll هستش یعنی زمانی که یه پروسس یا ترید اجرا یا نابود می شه اجرا می شه

سوال :» چگونه یه DLL بنویسیم و بعد از توابع ان استفاده کنیم

جواب:
علاوه بر فایل های DEF.

extern "C"
{
__declspec(dllexport) void Function1(void);

}


و روش استفاده :


__declspec(dllimport) void Function1(void);

برای کلاس هم


class __declspec(dllexport) CExampleExport : public CObject
{ ... class definition ... };



این کار باعث می شه دیتا منبر های عمومی ( همون فیلد تو C#) و توابع عضو ( تو C# بهشون می گیم متود) export بشن

برای اینکه همی چی رو کامل بگیری :


http://msdn.microsoft.com/en-us/library/3y1sfaz2%28VS.80%29.aspx
http://msdn.microsoft.com/en-us/library/81h27t8c%28v=VS.80%29.aspx
http://msdn.microsoft.com/en-us/library/a90k134d%28VS.80%29.aspx
http://msdn.microsoft.com/en-us/library/e7tsx612%28v=VS.80%29.aspx
http://msdn.microsoft.com/en-us/library/ys435b3s%28v=VS.80%29.aspx
http://msdn.microsoft.com/en-us/library/z4zxe9k8%28VS.80%29.aspx

رو بخون بهترین لینک های هستن