درخواست پروژه : ارتباط #C با لوا نسخه 5.1 با dll

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
لوا نسخه 5.1 یه زبونی اسکریپت نویسی هست که در نرم افزار Autoplay Media Studio استفاده میشه . این زبان چون بصورت پیش فرض شی گرا نیست ، نمیتونه متدهای ساخته شده در زبان های شی گرا را فراخونی کنه ولی با زبان هایی که غیر شی گرا هم کار میکنن مثل ++C مشکلی نداره برای فراخونی توابع شون

میگم این شدنی هست که یکی بتونه یه dll ای طراحی کنه که بدون هیچ محدودیتی بتونه بین لوا 5.1 و #C ارتباط برقرار کنه و بشه متدهای #C رو بوسیله ی اون dll فراخونی کرد؟
یعنی بدون دستکاری در تنظیمات #C یا بدون محدودیت در نسخه دات نت اش
یعنی هر کس هر جایی با زبان #C نوشت ، بشه توی لوا فراخونی کرد
حالا این dll بخاد توی ++C نوشته شه یا هر زبون دیگه
من 30 تومن بابت این dll میتونم بپردازم
 

the_king

مدیرکل انجمن
سلام
لوا نسخه 5.1 یه زبونی اسکریپت نویسی هست که در نرم افزار Autoplay Media Studio استفاده میشه . این زبان چون بصورت پیش فرض شی گرا نیست ، نمیتونه متدهای ساخته شده در زبان های شی گرا را فراخونی کنه ولی با زبان هایی که غیر شی گرا هم کار میکنن مثل ++C مشکلی نداره برای فراخونی توابع شون

میگم این شدنی هست که یکی بتونه یه dll ای طراحی کنه که بدون هیچ محدودیتی بتونه بین لوا 5.1 و #C ارتباط برقرار کنه و بشه متدهای #C رو بوسیله ی اون dll فراخونی کرد؟
یعنی بدون دستکاری در تنظیمات #C یا بدون محدودیت در نسخه دات نت اش
یعنی هر کس هر جایی با زبان #C نوشت ، بشه توی لوا فراخونی کرد
حالا این dll بخاد توی ++C نوشته شه یا هر زبون دیگه
من 30 تومن بابت این dll میتونم بپردازم

ربطی به شیء گرایی نداره، مربوط به نحوه ساختن کتابخانه dll و شیوه ارسال پارامتر ها و فراخوانی توابع ئه. کتابخانه های مرسوم ای که بصورت dll برای استفاده سایر برنامه ها طراحی می شوند
برای ارسال پارامتر به توابع و برگردوندن مقدار خروجی تابع از روش های متفاوتی استفاده می کنند که هر کامپایلری از یک یا چند روش پشتیبانی می کنه. روش های cdecl و stdcall و fastcall روش های مرسوم ای هستند
که برای پردازنده های 32 بیتی Intel طراحی شده اند و از پشته و رجیستر های واقعی پردازنده استفاده می کنند و اغلب برنامه ها هم یک یا چند مورد از اینها رو پشتیبانی می کنند.

فایل های اجرایی #C که توسط Visual Studio ساخته میشه کلا برای ماشین مجازی نوشته شده اند و به همین جهت روش هایی مثل cdecl و stdcall و fastcall که مربوط به پردازنده های واقعی طراحی شده اند رو بکار نمی بره.
به همین جهت حتی اگر راهی برای ساختن کتابخانه های استاندارد dll در #C بود، متد های داخل کتابخانه برای زبان هایی که با ماشین مجازی کار نمی کردند قابل دسترسی نبودند.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ربطی به شیء گرایی نداره، مربوط به نحوه ساختن کتابخانه dll و شیوه ارسال پارامتر ها و فراخوانی توابع ئه. کتابخانه های مرسوم ای که بصورت dll برای استفاده سایر برنامه ها طراحی می شوند
برای ارسال پارامتر به توابع و برگردوندن مقدار خروجی تابع از روش های متفاوتی استفاده می کنند که هر کامپایلری از یک یا چند روش پشتیبانی می کنه. روش های cdecl و stdcall و fastcall روش های مرسوم ای هستند
که برای پردازنده های 32 بیتی Intel طراحی شده اند و از پشته و رجیستر های واقعی پردازنده استفاده می کنند و اغلب برنامه ها هم یک یا چند مورد از اینها رو پشتیبانی می کنند.

فایل های اجرایی #C که توسط Visual Studio ساخته میشه کلا برای ماشین مجازی نوشته شده اند و به همین جهت روش هایی مثل cdecl و stdcall و fastcall که مربوط به پردازنده های واقعی طراحی شده اند رو بکار نمی بره.
به همین جهت حتی اگر راهی برای ساختن کتابخانه های استاندارد dll در #C بود، متد های داخل کتابخانه برای زبان هایی که با ماشین مجازی کار نمی کردند قابل دسترسی نبودند.

سلام
ممنون
آها اینا روش ان؟
ماشین مجازی چیه؟
یعنی کلا نمیشه کاری کرد که dll هایی که برای ماشین مجازی طراحی میشن ، توی زبون هایی که غیر ماشین مجازی رو ساپورت میکنن ، مورد استفاده قرار بگیره؟
ماشین مجازی همون پروژه های دات نت هستن؟
آخه من یه پروژه ای دارم که فایل dll هست و یکی از زبون های دات نت 2 که ساپورت میکرد ، نوشته شده و مشکلی نداره . حالا نمیدونم اون زبان #C بود یا نه
کلا راهی وجود نداره؟
 

the_king

مدیرکل انجمن
سلام
ممنون
آها اینا روش ان؟
ماشین مجازی چیه؟
رجوع شود به : لطفا منو راهنمایی کنید (++c)


یعنی کلا نمیشه کاری کرد که dll هایی که برای ماشین مجازی طراحی میشن ، توی زبون هایی که غیر ماشین مجازی رو ساپورت میکنن ، مورد استفاده قرار بگیره؟
نه، کلا با دو تا زبان و معماری متفاوت طراحی شده اند.


ماشین مجازی همون پروژه های دات نت هستن؟
نه، ماشین و پروژه مفاهیم کاملا متفاوتی اند. پروژه رو شما می سازید ولی برای اجرا شدن خروجی پروژه بجای ماشین واقعی از ماشین مجازی استفاده میشه، زبان های Net. و Java و Visual Basic 6 و ... ازش استفاده می کنند.


آخه من یه پروژه ای دارم که فایل dll هست و یکی از زبون های دات نت 2 که ساپورت میکرد ، نوشته شده و مشکلی نداره . حالا نمیدونم اون زبان #C بود یا نه
کلا راهی وجود نداره؟

قاعدتا به زبان ++C ئه، موقعی که در ویژوال استدیو می خواهید یک پروژه به زبان ++C بسازید چند تا انتخاب متفاوت وجود داره، یکی شون CLR ئه که مثل #C از امکانات NET. و ماشین مجازی اش استفاده می کنه
ولی بقیه شون معمولی و به اصطلاح Native اند و خروجی کامپایلر شون کاملا مستقل از Net. Framework ئه.
 

جدیدترین ارسال ها

بالا