ورود

View Full Version : ساختن DLL با VC++



lord_akinak
سه شنبه 27 آذر 1386, 17:46 عصر
سلام
فرض کنید توی project مون یک سری function و class داریم ، و این برنامه از یک سری dll و lib دیگه استفاده می کنه ،
چطور باید project مون رو dll کامپایل کنیم تا کاربر class ها و function های ما نیازی به داشتن lib ها و dll هایی که ما توی project مون include کردیم نداشته باشن و برای اجرا فقط lib ما رو include کنن و dll مون رو کنار برنامشون بزارن ...
با تشکر پیشاپیش...

Delphi Coder
سه شنبه 27 آذر 1386, 18:00 عصر
نمیشه. اگه از dll های خاصی استفاده کردید حتما اونا هم باید با Dll شما حمل بشن.

lord_akinak
سه شنبه 27 آذر 1386, 18:18 عصر
نمیشه. اگه از dll های خاصی استفاده کردید حتما اونا هم باید با Dll شما حمل بشن.
مشکلی نیست ، مهم برام اینه که موقع برنامه نویسی با dll ما ، کاربر به Include کردن .lib ها و header هایی که ما inlcude کردیم نیاز نداشته باشه ...

Inprise
سه شنبه 27 آذر 1386, 18:23 عصر
موقع برنامه نویسی با dll ما ، کاربر به Include کردن .lib ها و header هایی که ما inlcude کردیم نیاز نداشته باشه ..

وقتی یک DLL مستقل میسازی کافی هست که هدرش رو منتشر کنی . برای استفاده از اون به چیز دیگری لازم نیست .

lord_akinak
سه شنبه 27 آذر 1386, 20:04 عصر
لطفا به سوال دقت کنید ...
اون DLL مستقل کوفتی رو چطور بسازم ...

ICEMAN
چهارشنبه 28 آذر 1386, 12:28 عصر
http://www.geocities.com/sujitmanolikar/dllhowto.html
فک کنم تو این لینک به اندازه کافی واضح توضیح داده باشه

lord_akinak
جمعه 30 آذر 1386, 22:09 عصر
به اندازه کافی واضح توضیح داده باشه
من نفهمیدم... یه جوون مردی بیاد توضیح بده نمی شه ...؟؟
توی VS 2005 می خوام این کار رو بکنم ...

Nima_NF
یک شنبه 02 دی 1386, 00:16 صبح
من نفهمیدم... یه جوون مردی بیاد توضیح بده نمی شه ...؟؟
توی VS 2005 می خوام این کار رو بکنم ...

در حالت معمول dll آن شرکت نیز باید در کنار dll شما ، کنار فایل اجرایی شما باشد و برای استفاده dll شما هم ، اگر کاربر شما فقط به توابع dll شما دسترسی دارد ، لینک کردن به توابع شما کافیست (چون فایل dll شما قبلا کامپایل شده و کاربر جدید که از dll شما استفاده می کند دیگر نیازی به لینک کردن به dll قبلی ندارد ، اما هر دو dll باید موجود باشند) .
برای این کار هم شما می توانید مثلا از روش LoadLibrary استفاده کنید و از dll قبلی به همان شکل استفاده کنید ، تا دیگر نیازی به لینک کردن به import library برای dll قبلی نداشته باشید و فقط یک جستجو برای یافتن dll انجام شود.

اگر source code را داشتید می توانستید dll شرکت دیگر را هم حذف و در dll خودتان ترکیب کنید.
--------------
البته برخی ابزار و روش ها وجود دارد که برای merge می توانند به نحوی به کار روند مانند :
ILMerge مایکروسافت برای دات نت
http://research.microsoft.com/~mbarnett/ILMerge.aspx (http://research.microsoft.com/%7Embarnett/ILMerge.aspx)

روش دیگری هم برای کارهای غیر دات نت وجود دارد که دقیقا از کارآمدی آن مطمئن نیستم و برنامه نویسی را نیز پر دردسر می کند ، مانند استفاده از custom resource که dll دیگر را در dll خودتان اضافه می کنید و برای استفاده هم مشکلات زیادی خواهید داشت :
نمونه کد ها (http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=792898&SiteID=1)

static-link library هم برای مواقعی هست که شما کتابخانه را از ابتدا به همان صورت static تعریف می کنید.(lib.)

lord_akinak
یک شنبه 02 دی 1386, 11:58 صبح
مشکل با این لینک حل شد ...
http://www.functionx.com/visualc/libraries/staticdll.htm