Contacts
صفحه اصلی پورتال | صفحه اصلی تالار | ثبت نام | اعضاء | گروه ها | جستجو | پرسش و پاسخ | فروشگاه الکترونیکی | خرید پستی بازی های کامپیوتری





صفحه اول انجمنها -> برنامه نویسی با زبان های C++ و Delphi و VB -> نوشتن DLL برای Game Maker با cpp (سطح متوسط)
 

ارسال يك موضوع جديد   پاسخ به يك موضوع ديدن موضوع قبلي :: ديدن موضوع بعدي

نوشتن DLL برای Game Maker با cpp (سطح متوس
نويسنده
پيغام
شهروز
مدیر انجمن
مدیر انجمن


تاريخ عضويت: جمعه 16 مرداد 1383
تعداد ارسالها: 3279
محل سكونت: Germany


5 شنبه 6 مهر 1391 - 00:02
پاسخ بصورت نقل قول
سلام.
یکی دو آموزش در اینترنت به زبان انگلیسی برای نوشتن کتابخانه برای گیم میکر وجود داره.
این هم یک منبع فارسی برای شمایی که دوست داری برای گیم میکر DLL بنویسید.

چون بیشتر این آموزش cpp هست بنابراین در این انجمن گذاشتمش.


ابتدا cpp را باز کنید. ( ورژنش مهم نیست)
سپس یک پروژه جدید از نوع WIN32 و با نام GM_DLL ایجاد کنید. File -> New -> Project
در پنجره Wizard گزینه Next و سپس DLL و Empty Project را انتخاب کنید و در نهایت Finish.

بسیار خب. قبل از هر کاری مطمئن بشید که برای All Configurations در تنظیمات General ، گزینه Character Set روی Not Set قرار داشته باشد. در غیر اینصورت با مشکل مواجه خواهید شد.

حالا یک فایل cpp در پوشه Source ایجاد کنید.
در این مثال هدف ما ساخت یک MessageBox با ورودی از گیم میکر هست.

در ابتدا هدر windows.h را لود کنید.
كد:
#include <windows.h>


سپس خط زیر را اضافه کنید. در این خط ما تعیین می کنیم که توابع مورد نظر با با این فورمت که مورد قبول گیم میکر هست قابل فراخوانی باشند. (البته این مختص گیم میکر نیست)

كد:
#define DLLEXPORT extern "C" __declspec (dllexport)


حالا کافیه در ابتدای توابع مورد نظرمون تعریف DLLEXPORT رو قرار بدیم.
كد:

DLLEXPORT double msg_show (char* a, char* b)
{
   MessageBox(0,a,b,MB_OK);
   return 0;
}


توجه داشته باشید، ورودی و خروجی توابع در گیم میکر فقط می توانند real یا string باشند که در cpp میشه double و char* . البته روش های دیگه ای هم برای ارسال و دریافت رشته وجود داره که برای unicode میشه ازشون استفاده کرد.

به همین سادگی. کار تمومه.
حالا خروجی بگیرید و فایل GM_DLL.dll رو در پوشه فایل گیم میکرتون قرار بدید.
در گیم میکر یک Object بسازید و کدهای زیر رو درش قرار بدید :

كد:
global.mmm = external_define('GM_DLL.dll','msg_show',dll_cdecl,ty_real,2,ty_string,ty_string);
external_call(global.mmm,"message","title");


در تابع external_call باید ورودی های تابع موجود در dll رو وارد کنید. درکش خیلی ساده هست.


امیدوارم که مفید بوده باشه.
شهروز

_________________




استدیوی نرم افزاری بلوبالک
www.Bluebulk.info
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر
 

نمايش نامه هاي ارسال شده قبلي:   
ارسال يك موضوع جديد   پاسخ به يك موضوع    صفحه 1 از 1 تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد


 
پرش به:  


شما نمي توانيد در اين انجمن نامه ارسال كنيد.
شما نمي توانيد به موضوعات اين انجمن پاسخ دهيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن ويرايش كنيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن حذف كنيد
شما نمي توانيد در نظر سنجي هاي اين انجمن شركت كنيد


unity3d

بازگردانی به فارسی : علی کسایی @ توسعه مجازی کادوس 2004-2011
Powered by phpBB © 2001, 2011 phpBB Group
| Home | عضويت | ليست اعضا | گروه هاي كاربران | جستجو | راهنماي اين انجمن | Log In |