mosini
شنبه 02 خرداد 1388, 12:36 عصر
سلام
در این مقاله سعی میکنم خیلی ساده طریقه ساخت API های ویندوز رو شرح بدم.البته برای سادگی ساخت این گونه API ها از نرم افزار Visual Studio استفاده کردم.می خوام یهAPI ای بسازم که شامل تابعی هست که دو عدد صحیح را بعنوان ورودی میگیره و نتیجه ی جمع این دو عدد را بعنوان خروجی میگیره.
خب برای این کار Visual Studio 2008 خودتون رو اجرا کنید و به مسیر زیر بروید:
File->New->Project
سپس زبان Visual C++ را انتخاب کنید و قالب برنامه نویسی را Win32Project را انتخاب کنید.نامی برای آن برگزینید.مثلا myDll و سپس روی OK کلیک کنید.با کلیک بر روی OK پنجره خوشامد گویی باز میشود بر روی next کلیک کنید.سپس از قسمت application type گزینه ی DLL را انتخاب و بر روی Finish کلیک کنید.
نکته:قالب برنامه نویسی را به این دلیل Win32Project انتخاب کردیم، چون API های ویندوز نیز از همین نوع هستند.
پس از کلیک بر روی finish پنجره ای حاوی کد برای فایل کد myDll.cpp به شما نشان داده میشود.
نکته:در صورتی که برای شما این فایل کد نشان داده نشد بر روی solution explorer رفته و از پوشه source بر روی myDll.cpp دو بار کلیک کنید.
همانطور که در این فایل کد میبینید ابتدا یه هدر(header) بنام include# stdafx در آن وجود دارد.
نکته:کلا برنامه های ++C با هدر های اینگونه ای شروع می شوند.
در ادامه می خواهیم api های خودمون رو بسازیم بطوریکه:
این dll یا api بتونه توی هر زبان برنامه نویسی دیگه ای مورد استفاده قرار بگیره.
در این صورت باید در ادامه تابع مورد نظرمون را تعریف کنیم.چون این تابع باید بتونه تو هر زبان برنامه نویسی دیگه ای مورد استفاده قرار بگیره باید عبارت زیر را قبل از نوشتن تابع بنویسیم:
__declspec(dllexport)
و بعد از این عبارت باید پیاده سازی تابع خودمون رو بنویسیم.پس مینویسیم:
__declspec(dllexport) int Sum(int num1,int num2)
{
return num1+num2;
}
حال کاری که می ماند این است که صریحا اعلان کنیم که این تابع باید توسط محیط خارج از خودش قابل دسترسی باشد.برای این کار بر روی نام پروژه در solution explorer راست کلیک کنید و سپس از روی Add گزینه ی New Item را کلیک کنید و از پنچره ای که باز میشه آیتم ای بنام Module-Definition file را از ساختار درختی سمت چپ این پنجره بنام Code انتخاب کنید و نام آنرا مثلا بگذارید export.و بر روی OK کلیک کنید.همونطور که میبینید فایلی بنام export.def برای شما ظاهر میشود وشما باید در این فایل بگید که کدام تابع ها در برنامتون باید از خارج از این برنامه قابل دستیابی باشند.ما در این مثال می خواهیم که تابع sum قابل دستیابی باشه پس زیر عبارت LIBRARY "myDll" مینویسیم:EXPORT Sum .
نکته:باید کلمه EXPORT با حروف بزرگ بنویسید .
در ادامه solution خود را build کنید و دیگه کار تمومه.در ادامه نحوه استفاده از این API را در C# سی شارپ توضیح خواهم داد.
موفق باشید
در این مقاله سعی میکنم خیلی ساده طریقه ساخت API های ویندوز رو شرح بدم.البته برای سادگی ساخت این گونه API ها از نرم افزار Visual Studio استفاده کردم.می خوام یهAPI ای بسازم که شامل تابعی هست که دو عدد صحیح را بعنوان ورودی میگیره و نتیجه ی جمع این دو عدد را بعنوان خروجی میگیره.
خب برای این کار Visual Studio 2008 خودتون رو اجرا کنید و به مسیر زیر بروید:
File->New->Project
سپس زبان Visual C++ را انتخاب کنید و قالب برنامه نویسی را Win32Project را انتخاب کنید.نامی برای آن برگزینید.مثلا myDll و سپس روی OK کلیک کنید.با کلیک بر روی OK پنجره خوشامد گویی باز میشود بر روی next کلیک کنید.سپس از قسمت application type گزینه ی DLL را انتخاب و بر روی Finish کلیک کنید.
نکته:قالب برنامه نویسی را به این دلیل Win32Project انتخاب کردیم، چون API های ویندوز نیز از همین نوع هستند.
پس از کلیک بر روی finish پنجره ای حاوی کد برای فایل کد myDll.cpp به شما نشان داده میشود.
نکته:در صورتی که برای شما این فایل کد نشان داده نشد بر روی solution explorer رفته و از پوشه source بر روی myDll.cpp دو بار کلیک کنید.
همانطور که در این فایل کد میبینید ابتدا یه هدر(header) بنام include# stdafx در آن وجود دارد.
نکته:کلا برنامه های ++C با هدر های اینگونه ای شروع می شوند.
در ادامه می خواهیم api های خودمون رو بسازیم بطوریکه:
این dll یا api بتونه توی هر زبان برنامه نویسی دیگه ای مورد استفاده قرار بگیره.
در این صورت باید در ادامه تابع مورد نظرمون را تعریف کنیم.چون این تابع باید بتونه تو هر زبان برنامه نویسی دیگه ای مورد استفاده قرار بگیره باید عبارت زیر را قبل از نوشتن تابع بنویسیم:
__declspec(dllexport)
و بعد از این عبارت باید پیاده سازی تابع خودمون رو بنویسیم.پس مینویسیم:
__declspec(dllexport) int Sum(int num1,int num2)
{
return num1+num2;
}
حال کاری که می ماند این است که صریحا اعلان کنیم که این تابع باید توسط محیط خارج از خودش قابل دسترسی باشد.برای این کار بر روی نام پروژه در solution explorer راست کلیک کنید و سپس از روی Add گزینه ی New Item را کلیک کنید و از پنچره ای که باز میشه آیتم ای بنام Module-Definition file را از ساختار درختی سمت چپ این پنجره بنام Code انتخاب کنید و نام آنرا مثلا بگذارید export.و بر روی OK کلیک کنید.همونطور که میبینید فایلی بنام export.def برای شما ظاهر میشود وشما باید در این فایل بگید که کدام تابع ها در برنامتون باید از خارج از این برنامه قابل دستیابی باشند.ما در این مثال می خواهیم که تابع sum قابل دستیابی باشه پس زیر عبارت LIBRARY "myDll" مینویسیم:EXPORT Sum .
نکته:باید کلمه EXPORT با حروف بزرگ بنویسید .
در ادامه solution خود را build کنید و دیگه کار تمومه.در ادامه نحوه استفاده از این API را در C# سی شارپ توضیح خواهم داد.
موفق باشید