تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 4 از 4

نام تاپيک: Shared Libraries

  1. #1
    کاربر فعال انجمن گنولینوکس Ali_RNT's Avatar
    تاريخ عضويت
    Jul 2013
    محل سكونت
    home/ali_rnt/
    پست ها
    1,333

    پيش فرض Shared Libraries

    درود.

    من برای برنامه ای که نوشتم یه کتابخونه درست کردم که میخوام به صورت Shared استفاده کنم. کسی میتونه یه مقدار درمورد این نوع کتابخونه ها و پیاده سازیشون با C++ توضیح بده؟

    نمیدونم چرا تا حالا هیچ کدوم از سوالام تو بخش برنامه نویسی جواب نگرفتن :| لطفا اینبار منو بی جواب نذارید.

    با سپاس

  2. #2
    کـاربـر بـاسـابـقـه god of war 2's Avatar
    تاريخ عضويت
    Jun 2007
    پست ها
    585

    پيش فرض

    کلا پیاده سازی کتابخونه ها در ظاهر سادس ولی حقیقت اینه که جزئیات زیادی داره که بعدا در حین کار به اون جزئیات مواجه میشید.
    یه توضیح مختصر راجب کتابخونه ها برای شروع کار :
    در کل Shared libraries در هر سیستم عاملی با پسوند های مختلف (so. , .dll, .dylib) قابل ایجاد شدن هستن و تقریبا ساختار کلی مشابهی دارند ولی جزئیات کار کمی تفاوت داره. کتابخانه های shared در زمان اجرا (run-time) بارگزاری و استفاده میشن بر عکس نوع static که تمام عملیات لینک در زمان کامپایل (compile-Time) انجام میشه. معمولا برنامه نویس بر پایه یکسری پارامتر ها تصمیم میگیره که کدشو در قالب کدوم نوع (shared یا static) گسترش بده مثلا یکی از این پارامتر ها اینه که چه تعداد برنامه قراره از این کد استفاده کنه. اگر قراره این کتابخانه تنها در یک برنامه استفاده بشه نوع static توصیه میشه که دردسر های shared رو نداره و از نظر performance هم بهتر عمل میکنه چون نیازی به بارگزاری در زمان اجرا نداره. اگر استفاده کننده ها بیشتر از یکی هستند طبیعتا نوع shared بهتره به این دلیل که از تکرار کد بینه تمام استفاده کننده ها جلوگیری میشه.
    پارامتر دیگه میتونه ساختار برنامه باشه, مثلا برنامه هایی هستند که از سیستم plugin پشتیبانی میکنن و shared library ها میتونن به عنوان plugin تحت یک interface معین استفاده بشن و اینکار توسط نوع static قابل پیاده سازی نیست.
    پارامتر دیگه ایی که برای برنامه های open source مهمه نوع لایسنس هست مثلا برنامه هایی که تحت لایسنس LGPL منتشر میشن بهتره که در حالت shared استفاده بشن به این دلیل که استفاده کننده از نظر لایسنس آزادی عمل بیشتری براش فراهم بشه.
    اما اگراز نظر فنی بخوایم بررسی کنیم shared library ها پیاده سازیشون جزئیات بیشتریو میطلبه که اگه رعایت نشن ممکنه بعدا مشکل ساز بشه. به عنوان مثال بعضی از کلاس های STL مثل map ها معمولا وقتی بصورت عمومی در dll تعریف بشن مشکل ایجاد میکنن.
    مورد دیگه اینکه shared library ها بر خلاف نوع static نیاز به یکسری کد اضافه داره که مروبط میشه به اینکه چه توابع و کلاسهایی داخل dll قرار بگیرن بصورت عمومی و چه مواردی پنهان بشن که خود این مبحث خیلی مهمه. و...
    اگه اول کاری که میخواید انجام بدید + سیستم عامل + کامپایلرتون رو بگید بهتر و بیشتر میشه راهنمایی کرد.
    Last edited by god of war 2; 13-11-2015 at 17:39.

  3. این کاربر از god of war 2 بخاطر این مطلب مفید تشکر کرده است


  4. #3
    کاربر فعال انجمن گنولینوکس Ali_RNT's Avatar
    تاريخ عضويت
    Jul 2013
    محل سكونت
    home/ali_rnt/
    پست ها
    1,333

    پيش فرض

    سپاس از توضیحاتتون.

    یه برنامه ایجاد فلش بوتیبل میخوام بسازم. برای لینوکس و مشخصا با کامپایلر ++G

  5. #4
    کـاربـر بـاسـابـقـه god of war 2's Avatar
    تاريخ عضويت
    Jun 2007
    پست ها
    585

    پيش فرض

    از این ماکرو میتونید استفاده کنید که در هر دو سیستم عامل windows و linux قابل استفاده هست.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    نحوه استفاده:
    در داخل فایل header قبل از هر تابعی که میخواهید داخل کتابخانه قابل استفاده باشه FUNC_EXPORT رو قرار میدید به شکل زیر
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و در نهایت برای کامپایل و تست از لینک زیر کمک بگیرید.:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    Last edited by god of war 2; 13-11-2015 at 19:04.

  6. این کاربر از god of war 2 بخاطر این مطلب مفید تشکر کرده است


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •