دوستان سلام
اگه ممکنه اطلاعاتی رو در مورد فایل های dll به من بدین و اینکه مثلا تو c یه فایل ایجاد مکنن و تو vb استفاده می کنن چجوریه
ممنون
دوستان سلام
اگه ممکنه اطلاعاتی رو در مورد فایل های dll به من بدین و اینکه مثلا تو c یه فایل ایجاد مکنن و تو vb استفاده می کنن چجوریه
ممنون
سلام
دقیقاً چی میخواهید؟؟؟؟
طریقه ساخت dll در C را میخواهید؟؟؟ (که من که اصلاً حال توضیحش را ندارم) یا اطلاعات کلی میخواهید؟
H2 جان راستش یه جوری جواب دادی آدم روش نمیشه بگه هردوش ولی یه لطفی کن و طریقه ساختش رو هم جزو اطلاعات کلی حساب کن ما رو شرمنده کن
ممنون از توجهت
سلام
یک نمونه کد (Sample) برایت حاضر میکنم که یک API در ++VC و درون یک dll میسازد، (مثلاً برای جمع دو عدد) و بعد از VB آنرا صدا میزنم، فکر کنم بهتر است.
برخی موارد یک Sample خوب بهتر از ده ها خط توضیح عمل میکند.
فقط بسیار سرم شلوغ است ولی سعی میکنم تا فردا حاضر شود و اگر نشد ....شنبه..
فعلاً این را درست کنم تا برسد به توضیح ....
البته سروران و اساتید دیگر سایت هم هستند و اگر کمک کنند که عالی میشود!![]()
سلام
خوشبختانه توانستم نمونه کد را حاضر کنم.
توضیح خیلی کلی!
dll ها حاوی کدهای قابل اجرا هستند و این کدها را در قالبهای مختلف در اختیار دیگر کدهای اجرایی درون exe یا dll دیگر قرار میدهند.
خود dll هم میتواند مستقیماً مثل یک exe عمل کند، همانطور که بیش از 90 درصد دیالوگها و پنجره های معمولی که در ویندوز میبینیم از داخل dll اجرا میشوند.
dll ها عموماً به دو شیوه کد خود را صادر میکنند.
1- توابع جداگانه و در قالب API (که بنیان فرامین ویندوز بر همین مبنا است و روش فراخانی و روش ارسال پارامتر در انها مهم است)
2- صدور یک کلاسس ماژول به بیرون
خود کلاسس ماژول انواع فوق العاده متنوعی دارد که هر کدام کد نویسی جداگانه و طرز استفاده خاص را دارند ولی در حالت کلی میتوان خود آن را به دو دسته کلاسس بومی مدیریت نشده و کلاسس مدیریت شده دات نتی تقسیم کرد.
از بین انواع مختلف VB.Net2005 و C#.Net2005 فقط قادر به صدور کلاسسها و نوعهای مدیریت شده (دات نتی) با تمام جزئیات و کلاسسهای COM سبک است. (کلاسسهای COM توسط دات نت مارشالینگ میشوند و گرچه میتوان به راحتی اقدام به کد نویسی کرد ولی این به معنی آن است که در نهایت بازهم باید دات نت در رایانه نصب باشد.)
ولی VC++2005 از همه موارد با تمام جزئیات و حالات مختلف پشتیبانی میکند.
البته صدور کلاسس مدیریت شده فوق العاده راحت است و با صرف کلمه Public میتوان عمل فوق را انجام داد و حتی بدون کلمه فوق هم به راحتی امکان پذیر است ولی کلاسسهای مدیریت نشده در ++VC بعضاً به دهها و صدها خط کد نویسی برای کلاسس و رابط و رجیستر و... نیاز دارند که قدرت دات نت در export کلاسس ها به راحتی و بدون زحمت واقعاً ستودنی است
ضمناً قبلاً سرورمان am_merman01 هم مشابه حدودی این سوال شما را پرسیده بود، ببینید بد نیست!
forum.p30world.com/showthread.php?t=140405
این نمونه کد در اصل برای چیز دیگری نوشتم ولی این هم بد نیست!
یک dll مدیریت شده است که با خود VB.Net ساخته شده و درونش حاوی تعدادی تصویر است که تصاویر را در اختیار یک exe که آنهم با VB.Net است قرار میدهد.
900KB
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این هم نمونه کد اصلی که یک API با نام FunctionName در VC++ 8.0 درون یک dll با نام ApiCpp.dll میسازد (6KByte!) که دو عدد را جمع میکند و کد exe در VB 8.0 به آن وصل میشود و تابع مذکور را فراخانی میکند.
(در داخل VS2005 برای صحیح کار کردن دیباگر باید فایل ApiCpp.dll را در ریشه Bin\Debug که ساخته میشود کپی کنید.)
16KB
API ها یک سری رسوم استاندارد دارند که بهتر است رعایت شود مثلاً نوع فراخانی stdcall باشد یا پارامترهای ورودی و خروجی 4 بایتی باشند (یا مستقیم یا اشاره گر) و...کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
قابل ذکر است که کد فوق فوق العاده کوتاه و قابل فهم است به طوری که هر کد و فایل اضافه ای که نیازی نبوده را پاک کردم و کد نمونه در حداکثر کوچکی خود قرار دارد و دانلودش را به دوستان دیگر هم توصیه میکنم، من که خودم بعد از پایان کار خیلی لذت بردم که مثل دوران VC++6 و VB6 دوباره دیدم که VC++8 و VB8 در پخش کدهای مدیریت نشده به هم وصل شده اند.!
قابل ذکر است که dll فوق گرچه با نرم افزار VS.Net2005 طراحی شده ولی اصلاً ربطی به دات نت ندارد و در تمام زبانهای برنامه نویسی دات نتی و غیر دات نتی قابل استفاده است.
Last edited by _H2_; 29-10-2007 at 10:57. دليل: اصلاح لینک دوم (با عرض شرمندگی ایراد تایپی داشته!)
ممنون از وقتی که گذاشتی در امیدوارم جواب همه سوالاتتو به همین راحتی بدست بیاری
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)