ورود

View Full Version : سوال: ساخت win32 dll



mahdi1373
چهارشنبه 31 شهریور 1389, 12:42 عصر
سلام، من می خواهم win32 dll بسازم(که توش یه فرم باشه...). چطور میتونم تو ویژوال استودیو، win32 dll بسازم؟

mehdi.mousavi
چهارشنبه 31 شهریور 1389, 16:14 عصر
سلام، من می خواهم win32 dll بسازم(که توش یه فرم باشه...). چطور میتونم تو ویژوال استودیو، win32 dll بسازم؟

سلام.
متوجه نشدم این سوالتون شوخی هستش، یا دارید اونو جدی مطرح می کنید. در هر حال، VS رو باز کنید، از منوی File گزینه New و سپس Project رو انتخاب کنید. سپس سمت چپ، گزینه Visual C++ و زیر اون Win32 رو انتخاب کنید. سپس سمت راست، Win32 Project رو انتخاب کرده، اسم پروژه رو تعیین کنید و کلید OK رو بزنید. در پنجره جدیدی که باز میشه، سمت چپ، گزینه Application Settings و سپس سمت راست، Application Type رو DLL بذارید. بقیه تنظیمات رو نیز بر اساس خواسته خودتون تعیین کرده و کلید Finish رو بزنید.

موفق باشید.

mahdi1373
پنج شنبه 01 مهر 1389, 17:01 عصر
سلام.
متوجه نشدم این سوالتون شوخی هستش، یا دارید اونو جدی مطرح می کنید. در هر حال، VS رو باز کنید، از منوی File گزینه New و سپس Project رو انتخاب کنید. سپس سمت چپ، گزینه Visual C++‎ و زیر اون Win32 رو انتخاب کنید. سپس سمت راست، Win32 Project رو انتخاب کرده، اسم پروژه رو تعیین کنید و کلید OK رو بزنید. در پنجره جدیدی که باز میشه، سمت چپ، گزینه Application Settings و سپس سمت راست، Application Type رو DLL بذارید. بقیه تنظیمات رو نیز بر اساس خواسته خودتون تعیین کرده و کلید Finish رو بزنید.

موفق باشید.
ممنونم، آخه کجای سوال من شبیه شوخیه!؟

من این هاش رو بلد بودم، منظورم راجع به کد نویسی اش بود. حتما باید فایل هدر داشته باشه؟
من dll میسازم ولی توی برنامه نویسی زبان های دیگه(مثلا vb) وقتی dll ام رو add می کنم، error میده. مشکل از کجاست؟
و اینکه برای این که توابع از داخل برنامه های دیگه قابل استفاه باشه، باید کار خواصی روش کرد؟(کدی، چیزی...)

بسیار ممنون میشم اگه یه نمونه کد خیلی ساده یا آموزش مختصر بزارید.

r00tkit
پنج شنبه 01 مهر 1389, 18:42 عصر
سلام

وقتی استاد موسوی می گن شوخی بود یعنی شوخی بود


باید از


__declspec(dllexport)
استفاده کنی اگه از C++‎‎‎‎‎‎ استفاده می کنی از



extern "C"
هم استفاده کن (به خاطر Name_mangling) (http://en.wikipedia.org/wiki/Name_mangling)

پس کلا می شه: (مثالی بود که داشتم برای خودم الان می نوشتم این جا کپی کردم )



extern "C"
{
__declspec(dllexport) void rt()
{
HANDLE PHD=OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE,948);

PTHREAD_START_ROUTINE pThreadRtn = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHan dleW(L"user32.dll"), "Beep");

CreateRemoteThread(PHD, NULL, 0, pThreadRtn,NULL, 0, NULL);

}
}
برای کلاس هم ایجوری هستش که باعث می شه public data members وmember functions
اکسپورت بشن


class __declspec(dllexport) CExampleExport : public CObject
{ ... class definition ... };
و به جای همهی اینها می تونی از فایل های .DEF هم استفاده کنی

اینم یه مثال برای ایجاد DLL در C و استفاده در VB6 (حالا نمی دونم چرا VB مثال زدم ولی قسمت اول مثال مهم هستش (http://www.programmers-corner.com/tutorial/4))