سلام
ساخت dll در زبان های تحت فریم وروک مثل VB8 بسیار ساده است و تقریباً مطلب خفنی برای گفتن ندارد!
اما در ++VC باید مطالب زیادی می دانستید که در ساخت exe ها اصلاً وجود نداشتند.
هم نظر وقت مشکل دارم و هم اینکه واقعاً چیز خاصی بیش از کدنویسی exe ها نمی بینیم که برای ساخت dll بگویم و مثلاً یک تاپیک بزنم.
ولی امیدوارم نیمچه توضیح زیر کافی باشد و به علت ناقص بودنش من را ببخشند.
-----------------------------------------------------------------------
ساخت dll در Net. (با اجازه اساتید!)
اولین گام ساخت یک پروژه خالی dll است:
File->New->Project->Visual [Basic|C#|C++]->Class Library
یک پروژه جدید ساخته میشود با یک کلاسس پیش فرض به نام Class1
حال اصلاً نمیخواهد فکر کنید که دارید dll میسازید!!!
میتوانید پنجره یا همان فورم جدید به پروژه تان اضافه کنید و دقیقاً مثل exe روی پنجره تان کار کنید و دکمه و کنترل های دیگر روی آن قرار دهید.
میتوانید فایل جدید اضافه کنید و نوع های شمارشی (Enum) و یا کلاسس به پروژه تان اضافه کنید.
هر بلاک کدی که در درون dll داشته باشید و دارای برچسب یا سطح دسترسی Public باشد، بعد از ساخت dll و AddRefrence کردن آن به پروژه ی دیگر میتوانید ان را استفاده کنید.
نخندید! ولی به کد نمونه زیر نگاه کنید که مثلاً در dll ای آن را وارد کرده اید!
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ای داد بیداد! مگه نگفتم نخند!
dll را کامپایل میکنید و بعد در exe یا dll ای دیگر با فرمان Project->Add Refrence->Browse آن را به پروژه تان اضافه میکنید و مثلاً در جایی کد زیر را مینویسید!
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
تک نکته مهم و جالبی که وجود دارد در مورد Debug (اشکال یابی) پروژه های dll است.
بهترین راه:
حتماً میدانید که در VS یک مفهوم Solution داریم و یک مفهوم Project ، هر Project در اصل یک خروجی نهایی دارد و موجودیت واحد دارد، به ازای هر exe یا dll که دارید در اصل یک Project جدا هم دارید.
Solution مجموعه ای از چند Project است و در نتیجه شما میتوانید چند exe یا dll مرتبط با هم را در قالب یک Solution واحد در محیط VS باز کنید و همزمان روی همه انها کار کنید (گرچه نیاز نیست ولی هر Project موجود در Solution میتواند با یکی از زبان های تحت دات نت نوشته شده باشد) و شما به راحتی میتوانید روی همه انها کار کنید و در حالت Debug محل جاری اجرای دستور را خط به خط دنبال کنید و مثلا وقتی دستور نوشته شده در exe تان کدی را در dll تان صدا میزند دنبال ان و به صورت خط به خط به کد های dll بروید و خط اجرا را دنبال کنید (حتی اگر به زبان دیگری باشد!) در نتیجه میتوانید دقیقاً در محل خطای احتمالی در داخل dll برنامه را متوقف کنید (عین exe) و به بررسی دلیل خطا بپردازیر (عین exe) تنها مطلب مهمی که وجود دارد ان است که Refrence را نباید با Browse اضافه کنید.
فرض کنید دو پروژه، یکی exe و دیگری dll دارید و میخواهید انها را در قابل یک Solution واحد در VS بازکنید:
اولی را در VS باز کنید و سپس دومی را با فرمان File->Add->Existing Project (یا File->Add->New Project) باز کنید، حال باید هر دو پروژه را با هم در SolutionExplorer در سمت راست ببینید.
برای اضافه کردن Refrence پروژه dll به پروژه exe که قابلیت Debug به روش گفته شده را هم داشته باشد روی پروژه exe در SolutionExplorer کلیک کنید و یا همانجا با راست کلیل یا با فرامین استاندارد Project->Add Refrence->Projects پروزه dll را به exe اضافه کنید.
چه در حالت Project->Add Refrence->Browse و یا Project->Add Refrence->Projects به راحتی میتوانید با دادن نام "فضای نام" dll که معمولاً همان نام dll است به ماژول ها و کدهای داخل ان دسترسی پیدا کنید.
ولی اگر سورس dll را داشته باشید (مثلاً خودتان آن را نوشته باشید) و با Project->Add Refrence->Projects اقدام کنید آنگاه در اشکال یابی کدها راحت تر خواهید بود و عین exe در صورت خطا، خط محل خطا را خواهید دید چه آن خط مشکل دار در dll باشد و چه در exe باشد.
اگر هم کارتان با ساخت dll تمام شده و دیگر به صحت کارکرد ان اطمینان دارید یا میخواهید ان را به کس دیگری هم بدهید، کافیست (عین exe ها!) پروژه dll خود را در حالت Release کامپایل کنید و dll نهایی را از محل bin\Relaese بردارید.
در آخر هم کافیست dll تان در کنار exe تان کپی شود و نیاز به هیچ عملیات نصب خاصی ندارد و وجودش در کنار exe کافیست (گرچه میتوان آن را در محل اسمبلی های عمومی دات نت (GAC) هم نصب کرد)
یک پروژه نمونه هم وجود دارد که البته قصدش چیز دیگری بوده و یک exe و dll با هم وجود دارند و dll شامل یک کلاسس با دو متد Shared (یا همان static در C) است، که تعدادی عکس را که داخل dll به صورت embed شده هستند را در اختیار exe قرار میدهد! گرچه کار مزخرفی است ولی دوستان اینجا هم میتوانند به عنوان یک نمونه درپیت(!) ان را دانلود کنند و ببیند.
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید