View Full Version : سوال: استفاده از DLL ای که با زبانهای دیگه نوشته شده در VC++
barnameh08
شنبه 21 اسفند 1389, 16:34 عصر
سلام
من فایل .dll و .tlb یک برنامه و لیست توابع استفاده شده در این DLL رو دارم اما نمی دونم با چه زبانی نوشته شده
قصد دارم از این DLL در یک پروژه استفاده کنم
با ورژن 2005 کار می کنم
آیا کسی می تونه بهم کمک کنه ( در این زمینه اطلاعات زیادی ندارم لطفا از پایه توضیح دهید )
با تشکر
mehdi.mousavi
دوشنبه 23 اسفند 1389, 13:01 عصر
سلام من فایل .dll و .tlb یک برنامه و لیست توابع استفاده شده در این DLL رو دارم اما نمی دونم با چه زبانی نوشته شده قصد دارم از این DLL در یک پروژه استفاده کنم با ورژن 2005 کار می کنم آیا کسی می تونه بهم کمک کنه ( در این زمینه اطلاعات زیادی ندارم لطفا از پایه توضیح دهید ) با تشکر
سلام.
آیا مستندات این DLL رو در اختیار دارید؟ از اونجاییکه از فایل tlb نام بردید، قاعدتا این DLL شما یک COM Component هستش... برای استفاده از اون، ابتدا باید tlb ی مورد نظر رو در برنامه import کنید:
#import "myfile.tlb" no_namespace
سپس، باید Thread ای رو که قصد دارید در اون Thread با این DLL کار کنید، ابتدا Initialize کنید و اونو در یکی از آپارتمانهای COM قرار بدید (من فرض میکنم STA باشه):
CoInitialize(NULL);
خاطرتون باشه در انتهای کار، در همون Thread، باید با CoUninitialize کلیه منابعی تخصیص یافته به این Thread برای COM Library موجود رو بازپس بگیرید:
CoUninitialize();
مرحله بعد، این هستش که یک Instance از کلاس مورد نظر رو (که توسط GUID شناسایی میشه) ایجاد کرده، اشاره گر به اون رو بگیرید و متودهای موجود روی اون کلاس رو فراخوانی کنید. یکی از ساده ترین روشها، استفاده از Smart Pointer هایی است که بصورت خودکار با Import کردن Library شما در برنامه ایجاد میشه:
IMyComPtr pMine(__uuidof(MyCom));
pMine->MyMethod();
اینجا، من یک نمونه از کلاسی رو که UUID ی اون MyCom هستش، ایجاد میکنم و Pointer به اونو در pMine نگهداری میکنم. سپس متود MyMethod رو روی اون فراخوانی میکنم...
موفق باشید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.