سلام.
به برنامه نویس خوش آمدید. :) لطفا قبل از شروع فعالیت در سایت، از مطالعه قوانین سایت اطمینان حاصل کنید.
اما در مورد سوالتون، من قبلا
Namespace رو اینجا تعریف کرده ام. بنابراین Header File ها و Library ها رو براتون تعریف می کنم. اما قبل از تعریف header file ها، اجازه بدید تا ابتدا با معنای declare کردن آشنا بشیم. برای فراخوانی یک تابع، ابتدا باید Signature اونو در Source File خودمون قرار بدیم. اگر قرار باشه یک تابع از N جا Call بشه، اونوقت این تعریف باید در N نقطه صورت بگیره، که پر واضحه کاری بیهوده و وقت گیر هستش. پس، میاییم این تعریف رو در فایلی به نام Header File قرار میدیم و به Compiler میگیم که تعاریف موجود در فلان Header File رو در این Source File نیاز دارم (این گفتن توسط include انجام میشه و به این عمل میگن declare کردن). وقتی اینکار انجام بشه، دیگه Compiler مات و مبهوت نمیمونه که Signature فلان تابعی که فراخوانی شده چی هستش، چون شما اونو قبلا Declare کرده اید.
اما حالا پیاده سازی همون تابع، میتونه در یک Source File دیگه باشه که خود این Source File میتونه در یک Library جداگانه قرار داشته باشه. Library چیه؟ پیاده سازی توابعی است که مایلید اونها رو از چند برنامه فراخوانی کنید. فرض کنید، برنامه ای نوشته ایم که توانایی محاسبه عملیات شگفت انگیری رو داره و به یکباره دنیا متوجه کار برجسته ای که انجام داده ایم میشه و همه درخواست میکنن که پیاده سازی این توابع شگفت انگیز رو در اختیار اونها هم قرار بدیم تا اونها هم بخشی از مشکلات عالم رو با فراخوانی توابع نوشته شده توسط ما، حل کنند.
در این لحظه، آستین ها رو به سرعت بالا میزنیم و پیاده سازی توابعی که نوشته بودیم رو به یک فایل مجزا منتقل می کنیم (به خروجی تولید شده از این پیاده سازی ها که عموما فایل با خروجی dll یا lib هستش، Library میگیم). بعدش، برای اینکه برنامه نویس ها سردرگم نشن، Header File ای هم میسازیم و Signature توابع موجود در اون DLL/LIB رو در اون قرار میدیم. حالا، میتونیم این DLL/LIB رو بهمراه اون Header File به دست علاقمندان بدیم تا اونها،
- Header File رو در برنامه اشون include کنن،
- DLL/LIB رو هم به برنامه اشون Link کنن (که اگر نکنن، Linker با خطا مواجه میشه و ازمون میپرسه "پس پیاده سازی توابعی که declare کرده بودی کو؟")
و توابع شگفت انگیز ما رو Call کنن و ازش لذت ببرن. به این فایل DLL/LIB میگیم Library. با اینکار، ما Library (یا کتابخانه ای) برای انجام عملیات شگفت انگیز طراحی کردیم، حالا می تونیم اونو N بار در N پروژه بدون دست کاری یا Compile استفاده کنیم. :)
موفق باشید.