নেস্টেড স্ট্যাটিক লাইব্রেরি নির্ভরতা কি সম্ভব?


12

আমি কিউটিতে কাজ করছি।

  1. স্ট্যাটিক লাইব্রেরি কি অন্য স্ট্যাটিক লাইব্রেরির উপর নির্ভর করতে পারে?
  2. যদি হ্যাঁ, তবে এটি কি সম্ভব যে লিব 2 এর সাথে সংযুক্ত হওয়ার পরে, উত্পন্ন উত্স (lib1) সমস্ত লাইব 2 কোড ধারণ করে না?

আমার কিউটি প্রকল্পে আমি একটি স্ট্যাটিক লাইব্রেরি ব্যবহার করছি, যা একাধিক লাইব্রেরির উপর নির্ভর করে। আমাকে সমস্ত লাইব্রেরি যুক্ত করতে হয়েছিল (আমার প্রকল্পে তাদের সমস্ত শিরোনাম সহ) যদিও আমার কোডটিতে আমার কেবল একটি লাইব (এবং সেই শ্রেণীর একটি .h) প্রয়োজন।

দৃশ্যটি ব্যাখ্যা করুন।

উত্তর:


6

আপনি যখন কোনও কিছু ঘোষণা করেন আপনি কেবল প্রতিশ্রুতি দেন যে লিঙ্ক দেওয়ার সময় এটি উপলব্ধ এবং অনন্যভাবে চিহ্নিত করা হবে। স্ট্যাটিক লিবস স্ট্যান্ডার্ডের বাইরে এমন ফর্ম্যাটে সংজ্ঞায়নের ধারক ছাড়া আর কিছুই নয়। সুতরাং, এটির নিম্নলিখিত প্রভাব রয়েছে:

1) আপনি এখানে যা জিজ্ঞাসা করছেন তা আমি পুরোপুরি পাই না তবে একটি স্ট্যাটিক লাইব্রেরি অন্য স্ট্যাটিক লাইব্রেরির উপর অনেক বেশি নির্ভর করে। হয় আপনি প্রতিশ্রুতি দেন যে আপনার কার্যনির্বাহী (চূড়ান্ত নির্ভরতা হিসাবে এটি সরবরাহ করে) এর চূড়ান্ত লিঙ্কিংয়ের সময় library গ্রন্থাগারের সংজ্ঞাগুলি উপলব্ধ থাকবে। অথবা আপনি স্ট্যাটিক লিবের সংযোগের সময় এটিকে "সংহত" করেন।

2) এর উত্তরটি তখন হয়ে যায় যে কেবল আপনার কেবলমাত্র লিবি 1 এর সাথে লিঙ্ক করার সময় লিবি 2-এ লিঙ্ক না করা উচিত।

সামগ্রিকভাবে আমার অভিজ্ঞতার সর্বোত্তম পন্থা হ'ল লিবগুলি কেবল ব্যক্তিগতভাবে মার্জ করা, কারণ অন্যথায় ক্লায়েন্টরা যখন তাদের প্রকল্পের অন্যান্য অংশগুলি আপনার সাথে ভাগ করে নেবে তখন তাদের সংখ্যার বহুগুণ সংজ্ঞায়িত প্রতীক লঙ্ঘনে ডুবে যাবে।


এর অর্থ, একটি স্ট্যাটিক লিব যা অন্য স্ট্যাটিক লাইবের উপর নির্ভর করে, তবে সেই লিবের লিঙ্কিং তথ্য রয়েছে পজিবল T এর অর্থ যখন আমার প্রকল্পে প্রথম লিব অন্তর্ভুক্ত করা দরকার তখন আমি দ্বিতীয়টিও অন্তর্ভুক্ত করতে বাধ্য। বকোজ, প্রথম লাইবটিতে দ্বিতীয় লাইবের পুরো কোড নেই mআমি ঠিক আছি?
স্ক পাত্র

6

আমার দ্রুত এই দুটি বিট: 10 (দুঃখিত ভয়ানক রসিকতা)।

সামান্য প্রসারিত করতে, এখানে যায়:

1- একটি স্ট্যাটিক লাইব্রেরি অন্য একটি স্ট্যাটিক লাইব্রেরির উপর নির্ভর করে, কিছুই বা এমনকি ডায়নামিক লাইব্রেরি: প্রথম দুটি ক্ষেত্রে নতুন স্ট্যাটিক লাইব্রেরির সমস্ত কোড নতুন এসএলএল (স্ট্যাটিক লিংক লাইব্রেরি) -এ অন্তর্ভুক্ত করা হবে, তবে তৃতীয় বিকল্পটি , উচ্ছেদের উপর নির্ভর করে এসএলএল নিম্নলিখিত ফলাফলগুলির একটি হতে পারে,

  • এটিতে ডিএলএল (ডায়নামিক লিংক লাইব্রেরি) থেকে সংগৃহীত কোডের প্রয়োজনীয় কোডটির স্থির সংস্করণ থাকবে
  • বা আরও ভয়াবহভাবে, আপনার কাছে একটি স্ট্যাটিক লাইব্রেরি থাকবে যা কোনও প্রকল্পের অন্তর্ভুক্ত হওয়ার সাথে সাথে স্ট্যাটিক লিঙ্কিংয়ের পুরো পয়েন্টটি ভেঙে ডিএলএল দিয়ে শিপিংয়ের প্রয়োজনীয়তা দেখা দেয়।

সংক্ষেপে হ্যাঁ, আপনি একটি স্ট্যাটিক লাইব্রেরি একটি স্ট্যাটিক লাইব্রেরি লিঙ্ক করতে পারেন

2- যদি lib1 এবং lib2 উভয় স্থিতিশীল হয়, এবং lib1 কে lib2 এর সাথে সংযুক্ত করা হয়, তবে lib2 এর সমস্ত কার্যকারিতা lib1 এর অন্তর্ভুক্ত না করেই lib2 এর মধ্যে উপলব্ধ থাকত কারণ lib2 স্থিরভাবে লিবি 1 এর মধ্যে লিঙ্কযুক্ত হবে (ভাবেন রাশিয়ান পুতুল, লিবি 2 সহ) ছোট হচ্ছে)।

আপনি যে দৃশ্যের বর্ণনা দিয়েছেন তাতে অবশ্যই অন্তর্ভুক্ত থাকা প্রতিটি ফাইলের মধ্যে আলাদা আলাদা কার্যকারিতা থাকতে হবে যা স্থিরভাবে লিঙ্কযুক্ত নয়, তাই একাধিক ফাইলের প্রয়োজন, অন্যথায় আপনার একটি ফাইল অন্তর্ভুক্ত করতে হবে এবং আপনি ভাল হয়ে যাবেন।

নিম্নলিখিতগুলি গ্রহণ করুন: 6 স্ট্যাটিকালি লিঙ্কযুক্ত লাইব্রেরির উল্লেখ সহ একটি .h ফাইল: সম্পূর্ণ কার্যকারিতা পেতে আপনার প্রকল্পে 7 টি ফাইল অন্তর্ভুক্ত করতে হবে

অন্তর্ভুক্তি উদাহরণ 1

একটি এসএলএল যা বলা থেকে তৈরি করা হয়েছিল h। ফাইলটি সংকলনের সাথে সংযোগের জন্য কেবলমাত্র নতুন এসএলএল অন্তর্ভুক্ত করা দরকার:

অন্তর্ভুক্তি উদাহরণ 2

আশা করি এটি সহায়তা করে এবং আপনি কী জিজ্ঞাসা করেছিলেন তা আমি বুঝতে পেরেছি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.