PDA

View Full Version : برون کشیدن یک کلاس با Implemention مشخص از دل DLL



محمد میرمصطفی
چهارشنبه 07 اردیبهشت 1384, 02:37 صبح
با سلام.
من در واقع یک ++Cکار هستم و با معمولا با Borland C++Builder 6 کار می‏کنم. ولی هرکی بگه انترفیس BCB با دلفی قابل قیاسه یا C یا دلفی و یا هردو رو نمی‏شناسه. واسه همین هم من می‏خوام یه پروژه بنویسم که اینترفیسش با دلفی باشه ولی از امکانات سی++ توش استفاده کنم. من قبلا یه سری DLL نوشتم که حاوی کلاسهای من به زبان Borland C++Builder هستن. می‏خواستم بدونم چطوری می‏شه تو دلفی یه کلاس رو از دل یه DLL بیرون کشید.

با تشکر

Inprise
چهارشنبه 07 اردیبهشت 1384, 08:34 صبح
الف- لازم نیست در ابتدای تمام پست هات بنویسی که با BCB کار میکنی ؛
ب- اگر کلاس مورد نظرت توسط خودت پیاده سازی شده با شرایط و محدودیت های به خصوصی میتونی از اونها داخل دلفی استفاده کنی :

1. متدهای کلاس CPP ات رو بصورت توابع C از DLL اکسپورت کن . استفاده از این توابع درست به راحتی استفاده از کید واژهء External و نام DLL مورد نظر و تابع اکسپورت شده است .

2. استفاده از COM و طراحی کلاس CPP مورد نظرت بصورت یک COM Library برای کاربرد مستقیم در دلفی . ( برای استفاده از استاندارد رعایت شده در Interface ها )

3. استفاده از C بجای CPP و لینک Obj فایل خروجی C به برنامه دلفی زمان کامپایل

4. استفاده از یک اشاره گر به شی ساخته شده از کلاس مورد نظر داخل DLL .

در مجموع بخاطر تفاوت ساختار کلاسهای CPP و دلفی ، امکان استفاده مستقیم یک کلاس CPP داخل یک برنامه دلفی وجود نداره ؛ ( بخاطر مشکلات و ناسازگاری های مربوط به VMT و Name Mangling کامپایلرهای CPP و دلفی ) مگر اینکه کلاس های CPP ات کاملا" مبتنی بر VCL باشند ؛ که در اون صورت با استفاده از VMT Mapping میتونی از کلاس ات CPPی داخل DLL ات در دلفی استفاده کنی . در مجموع خروج یک کلاس از یک DLL نوشته شده با CPP ( حتی با BCB ) و استفاده از اون در دلفی ، تکنیک مفید و قابل توصیه ای نیست .

ج. امکانات تولید UI دلفی و BCB یکسان و مشابه است ؛ اگر با BCB کار میکنی به دلفی احتیاج نخواهی داشت .

موفق باشی

محمد میرمصطفی
جمعه 09 اردیبهشت 1384, 18:33 عصر
الف- :cry: :mrgreen: :sorry:
ب- ممنونم. هنوز امتحان نکردم.
ج-1- تو BCB در حالت عادی XP Style کردن componentها امکان نداره، ولی با بررسی component مربوطه تو دلفی فهمیدم که با Add کردن یه Resouce به نام WindowsXP.res که تو دلفی هست می‏تونم تقریبا این مشکل رو حل کنم.
ج-2- سه‏تا Component هست که تو BCB باهاش مشکل دارم.
ج-2-1- ActionMenu و ActionToolbar و ... که تو دلفی شدیدا Optimize شدن ولی تو C هنوز نه.
ج-2-2- TabPage و GroupBox که تو XP Style، Cنمی‏شه.

مجددا از راهنمایی شما متشکرم.

Inprise
شنبه 10 اردیبهشت 1384, 08:35 صبح
- در صورت Style یکبار مفصلا" تو بخش مربوط به BCB توضیح داده ام ، به همونجا مراجعه کن .