একটি dll কি?


90

এটি একটি খুব কৌতুকপূর্ণ প্রশ্ন হতে পারে তবে ওয়েব অ্যাপ্লিকেশন বিকাশের আজকের বিশ্বে অনেক প্রোগ্রামারকে ডিএল এর বেশি কিছু করার দরকার হয় না এবং তাদের উদ্দেশ্য সম্পর্কে শিখতে বিরক্ত করবেন না।

সুতরাং একটি dll কি?

  1. এটা কি কাজে লাগে?
  2. এটা কিভাবে কাজ করে?
  3. আপনি কিভাবে এটি তৈরি করবেন?
  4. কোন পরিস্থিতিতে একটি উপযুক্ত তৈরি করা হয়?

আমাকে বলা হয়েছে যে dll এর ফাংশনগুলির লাইব্রেরি সঞ্চয় করতে ব্যবহৃত হয়, তবে এর বাইরে আমি বেশি কিছু জানি না। আশা করি এখানে কেউ আমাকে আলোকিত করতে পারে তাই আমার উইন্ডোজ ডিরেক্টরিতে থাকা সমস্ত .dll ফাইলগুলি কী করছে তা অবশেষে আমি ভাবতে বাধা দিতে পারি।


আপনার প্রশ্নের কোন প্রকৃত উত্তর নেই এমন ক্ষেত্রে সম্প্রদায়ের উইকি ব্যবহার করা উচিত। এটি একটি বৈধ প্রশ্ন এবং সম্প্রদায় উইকি মোড নির্বাচন করে আপনি নিজেকে এবং উত্তরদাতাদের এই প্রশ্নের উত্তর পেতে বাধা দিন।
সেরাফিনা ব্রোসিয়াস

এই প্রশ্নটি একটি খুব জনপ্রিয় এক হওয়ার সম্ভাবনা রয়েছে
তামাস সিজনে

4
তুমি ভাবো? হতে পারে দেখার জন্য তবে ভোটের জন্য নয় ... যাইহোক এটি ইতিমধ্যে 4 বার উত্তর দেওয়া হয়েছে।
ওমর কোহেজি

4
এটি তুচ্ছভাবে গুগলযোগ্য ...
অনাকাঙ্কা

4
হ্যাঁ এটি গুগল, তবে সত্যই এটির তৈরির প্রশ্নটি এবং যখন এটি ব্যবহার করা উপযুক্ত তখন আমি এর অনেকগুলি সংক্ষিপ্ত ব্যাখ্যা সত্যই খুঁজে পাইনি।
ড্যানিয়েল

উত্তর:


55

একটি ডিএলএল হ'ল একটি গতিশীল লিঙ্ক লাইব্রেরি। এটি কোড এবং / বা ডেটা সংগ্রহ, যা বেশ কয়েকটি অ্যাপ্লিকেশন (বা অন্যান্য গ্রন্থাগার / মডিউল) ব্যবহার করতে পারে।

সুতরাং উদাহরণস্বরূপ ফাইলগুলি প্রক্রিয়া করার সাধারণ পদ্ধতিগুলি, জিইউআই উপাদানগুলির সাথে কাজ করা ইত্যাদি গ্রন্থাগারে উপলব্ধ করা হয় যাতে বেশ কয়েকটি অ্যাপ্লিকেশন একই কার্যকারিতা ব্যবহার করতে পারে। এটি কেবলমাত্র একাধিকবার একই জিনিস তৈরির প্রয়োজনকে হ্রাস করে না, তবে এটি নিশ্চিত করে যে উদাহরণস্বরূপ সাধারণ ডায়ালগগুলি অ্যাপ্লিকেশনগুলির মধ্যে একই।

লাইব্রেরি রানটাইমে লোড করা যায় এবং এইভাবে বিভিন্ন সমবর্তী অ্যাপ্লিকেশনগুলির মধ্যে ভাগ করা যায়। একে ডায়নামিক লিঙ্কিং বলা হয়।

কিছু ক্ষেত্রে গ্রন্থাগারটি প্রয়োগের মধ্যেই অন্তর্ভুক্ত করা যেতে পারে। এটি স্ট্যাটিক লিঙ্কিং হিসাবে পরিচিত। স্ট্যাটিক লিঙ্কিং নমনীয়তার ব্যয়ে স্থাপনাকে আরও সহজ করে তোলে কারণ বিভিন্ন অ্যাপ্লিকেশন প্রতিটি ডিএলএলের একই অনুলিপি লোড করবে।

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

ডিএলএল অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত একই সরঞ্জামগুলির দ্বারা তৈরি করা হয়। নির্দিষ্ট বিশদগুলি ব্যবহৃত সরঞ্জামগুলির উপর খুব বেশি নির্ভর করে।


উত্তরের জন্য ধন্যবাদ, একটি জিনিস আমি ভাবছি যে হ'ল অ্যাপ্লিকেশনগুলি কীভাবে জানবে যে ডিএল-তে কী কী কার্যাদি উপলব্ধ? ডেল নিজেই সব মেশিন কোড ঠিক আছে? তাহলে কীভাবে জনগণের ফাংশন স্বাক্ষরগুলি ডেল-এ প্রকাশ করা হয়?
ড্যানিয়েল

আমি বেশিরভাগ ভাষা সম্পর্কে জানি না, তবে ভিজ্যুয়াল স্টুডিওর অটো সম্পূর্ণ আপনাকে সমস্ত উপলব্ধ ফাংশন দেখাবে।
অনুদান দিন

4
তবে স্বতঃসম্পূর্ণ কীভাবে আবিষ্কার করবে যে ডেলটি কেবল মেশিন কোড হলে উপলব্ধ ফাংশনগুলি কী?
ড্যানিয়েল

4
যন্ত্রগুলি মেশিনের কোড পড়তে পারে। ডিএলএলগুলিতে আইকন, স্ট্রিং, ফন্ট থাকতে পারে। Pesumably এটি কোথাও কোথাও রয়েছে এর একটি তালিকা আছে।
অনুদান দিন

4
ভিজ্যুয়াল সি ++ এ ডাম্পবিন নামে একটি সরঞ্জাম রয়েছে - চলমান "ডাম্পবিন / রফতানি যাইহোক। Dll" আপনাকে কী কী ফাংশন এবং স্টাফ রপ্তানি করা হবে তা বলতে দেবে (অর্থাত্ ডিএলএল লোড করে এমন প্রোগ্রামগুলির দ্বারা ব্যবহারের জন্য উপলব্ধ)।
গ্রীম পেরো

29

ডিএলএল = ডায়নামিক লিংক লাইব্রেরি

নামটি তারা কী সম্পাদন করে তা আসলে বর্ণনামূলক।

গ্রন্থাগার

আপনাকে নির্দিষ্ট সমস্যা ডোমেনের জন্য কোডকে একক স্থানে আলাদা করতে দেয়। তারপরে এটি একাধিক অ্যাপ্লিকেশনগুলির মধ্যে ভাগ করুন। বাগ ফিক্স করতে বা কার্যকারিতা যুক্ত করতে লাইব্রেরিটি যে কোনও সময়ে অন্যের জন্য অদলবদল করা যেতে পারে।

লিঙ্ক

আপনি একটি অ্যাপ্লিকেশনে লাইব্রেরিটিকে "লিঙ্ক" করতে পারেন যাতে গ্রন্থাগারের যুক্তি সরাসরি অ্যাপ্লিকেশনটিতে সংকলিত না হয়।

গতিশীল

অন ​​লাইনে লাইব্রেরি লোড করা যেতে পারে। মেমোরিতে বিশাল একক EXE লোড করার পরিবর্তে ওএস কেবল প্রয়োজনীয় অংশগুলি লোড করতে পারে। প্লাস যদি কোনও ডিএলএল অ্যাপ্লিকেশনগুলির মধ্যে ভাগ করা থাকে তবে ওএস লাইব্রেরিটি কীভাবে লোড হয় তা অপ্টিমাইজ করতে এবং অ্যাপ্লিকেশনগুলির মধ্যে ভাগ করে নিতে পারে।


10

ডিএলএল (ডায়নামিক লিঙ্ক লাইব্রেরি) ফাইলগুলিকে ছোট "উপ-প্রোগ্রাম" হিসাবে বর্ণনা করা যেতে পারে যা বোঝানো হয় একটি বড় প্রোগ্রামকে ভালভাবে পরিচালিত করতে সহায়তা করে। তারা "যেমন প্রয়োজন-উত্থাপিত হয়" ভিত্তিতে বিভিন্ন হার্ডওয়্যার এবং সফ্টওয়্যার সংস্থানকে (তার রান-টাইম সেশনের বিভিন্ন পয়েন্টে) মূল নির্বাহযোগ্য প্রোগ্রামের সাথে সংযুক্ত করার একটি উপায় সরবরাহ করে। এটি যখন প্রোগ্রামটি প্রথম চালিত হয় তখন কম্পিউটারের র‌্যামে (এলোমেলো অ্যাক্সেস মেমোরি) মুখ্য এক্সিকিউটেবল প্রোগ্রামের সাথে করার সমস্ত কিছু লোড করার প্রয়োজনীয়তা দূর করে।

ডিএলএল দ্বারা পরিচালিত সফ্টওয়্যার সংস্থাগুলিতে বিভিন্ন প্রোগ্রাম ফাংশনগুলির কোড অন্তর্ভুক্ত রয়েছে যা প্রোগ্রাম চালিয়ে যাওয়ার জন্য সত্যই প্রয়োজন হয় না: এটি এমন একটি ফাংশন যা কেবলমাত্র একটি নির্দিষ্ট কম্পিউটিং সেশনের সময় নির্দিষ্ট সময়ে আহ্বান করা দরকার এবং সম্ভবত এটি এমনকি প্রয়োজনও না একেবারে ডাকা হবে। কম্পিউটারটি র‌্যামে এই ফাংশনগুলি লোড করা (এবং তাদের প্রদত্ত কোনও প্রোগ্রামের জন্য যথেষ্ট সংখ্যক সংখ্যা থাকতে পারে) এবং প্রোগ্রামটি প্রথম চালিত হওয়ার পরে পুরো অধিবেশনগুলিতে সেখানে রাখা র‌্যামের জায়গার অপচয় হবে - যা বিবেচিত হয় একটি প্রিমিয়াম.

একটি বড় অগ্রগতি:

ডিএলএলগুলির বিকাশ কম্পিউটিংয়ের ক্ষেত্রে একটি বড় অগ্রগতি ছিল, কারণ সেগুলি উপলভ্য হওয়ার আগে, প্রোগ্রামটি চালানোর আগে প্রোগ্রামটি লোড করার সময় সমস্ত কিছু (যা কখনও কখনও ব্যবহৃত হত বিরল ফাংশন সহ) র‌্যামে চাপিয়ে দেওয়া হয়েছিল। এটি বিভিন্ন প্রোগ্রাম দ্বারা ধীর গতির সাথে ধীরে ধীরে গতির সাথে অত্যন্ত অদক্ষ কম্পিউটিংয়ের দিকে পরিচালিত করে। এমনকি র‌্যামে উপস্থিতিদের স্ট্রেনের কারণে বেশ কয়েকটি সাধারণ প্রোগ্রাম চালিয়ে মাল্টিটাস্ক করাও অত্যন্ত কঠিন।

বিবেচনা:

ডিএলএল সাধারণত সংস্করণ-নির্দিষ্ট হয়। যাঁরা বলছেন, কোনও প্রোগ্রামের সংস্করণ 1 (বা কোনও প্রোগ্রামিং ভাষা যেমনটি হতে পারে) সংস্করণ ২-এর সাথে ভাল কাজ করতে পারে না general সাধারণ নিয়মটি হ'ল পুরানো সংস্করণে ডিএলএলগুলি কাজ করতে অক্ষম থাকে নতুন সংস্করণে ভাল তবে নতুন সংস্করণগুলির মধ্যে সাধারণত প্রোগ্রাম বা প্রোগ্রামিং ভাষার পুরানো সংস্করণটি বেশ ভালভাবে কাজ করতে পারে।


7

গতিযুক্ত লিঙ্কড লাইব্রেরি।

আপনাকে একটি উদাহরণ দেওয়ার জন্য, আপনি যদি অন্য কারোর ডিএলএল আপনার কাছে প্রয়োগ করে থাকেন তবে আপনি তা থেকে প্রোগ্রামিংয়ের বিটগুলি ব্যবহার করতে পারেন।

আপনি এমন একটি ডিএলএল লোড করতে পারেন যা এলোমেলো সংখ্যা উত্পন্ন করে যা সর্বদা "5" বা কিছু দিয়ে শুরু হয়।

আপনার প্রোগ্রামে আপনি ক্রেজিডিএলএল কল করতে পারেন ene

প্রকৃত বিশ্বের উদাহরণস্বরূপ, আমার কাছে ডিএলএল রয়েছে যা 4 টি পাঠ্যবাক্সকে সংযুক্ত করে (আপনি এগুলি আইপি ঠিকানাগুলি টাইপ করতে ব্যবহার করতে পারেন) এবং এটি স্বয়ংক্রিয়ভাবে কেবল 256 এর চেয়ে কম সংখ্যাকে স্বীকার করে এবং পূর্ববর্তী পাঠ্যবক্সে জাম্প করতে ব্যাকস্পেস কী টিপলে হ্যান্ডেলগুলি থাকে।

আমি সেই কোডটি দিয়ে একটি ডিএলএল তৈরি করেছি এবং এখন আমাকে যা করতে হবে তা হল যে সমস্ত কোডটি বারবার ডুপ্লিকেট না করে সেই আইপি ঠিকানা পাঠ্যবক্স সংগ্রহগুলি টেনে নিয়ে যায় এবং ফেলে দিতে হয়।

একই ডিএলএল এর আইপি ঠিকানাগুলি হেক্সাডেসিমাল স্ট্রিং এবং অন্যান্য দরকারী কোডগুলিতে রূপান্তর করার জন্যও কাজ করে।


1

এমএসডিএন গ্রন্থাগার থেকে :

ডায়নামিক-লিঙ্ক লাইব্রেরি (ডিএলএল) এমন একটি মডিউল যা ফাংশন এবং ডেটা ধারণ করে যা অন্য মডিউল (অ্যাপ্লিকেশন বা ডিএলএল) দ্বারা ব্যবহার করা যেতে পারে।


1

ডিএলএল = ডায়নামিক লোড লিংক লাইব্রেরি। যেমন আপনাকে বলা হয়েছে, এটি মূলত ফাংশন, সি ++ ক্লাস এবং / অথবা বৈশ্বিক ভেরিয়েবলগুলির সংগ্রহ। আপনি স্থিতিশীলভাবে ডিএলএল লোড করতে পারেন (যেমন আপনার প্রোগ্রামটি শুরু হওয়ার পরে ওএস স্বয়ংক্রিয়ভাবে এটি লোড করে) বা গতিশীলভাবে (আপনার প্রোগ্রামটি স্পষ্টভাবে এটি লোড করে), যেখানে আপনার প্রোগ্রামের জন্য ডিএলএল এর ভিতরে থাকা ফাংশন এবং স্টাফ উপলব্ধ থাকে।

একটি তৈরি করা EXE তৈরির অনুরূপ, যদি কোনও main()ফাংশন হওয়ার দরকার না হয়। লিঙ্কারকে একটি এক্সইয়ের পরিবর্তে ডিএলএল তৈরি করতে বলার নির্দেশিকা রয়েছে।

আপনি এটি করতে চাওয়ার প্রধান কারণটি হ'ল কিছু কোড এক জায়গায় encুকিয়ে দেওয়া এবং একের সাথে কোডটিকে একের সাথে সংযুক্ত করার পরিবর্তে একাধিক এক্সি থেকে ব্যবহার করা।

কিছুটা historicalতিহাসিক কারণ হ'ল কোডটি শারীরিকভাবে কোনও আলাদা ফাইলে অবস্থিত হওয়ায় আপনার এক্সিটি ছোট হতে পারে। এর অর্থ হ'ল আপনার উদাহরণের দ্বারা মেমরিতে নেওয়া স্থানের পরিমাণ আরও কম হতে পারে। আধুনিক সিস্টেমে এটি আগের তুলনায় কোনও ইস্যু কম নয় যদিও এটি উইন্ডোজ মোবাইলের ক্ষেত্রে এখনও একটি সমস্যা হতে পারে।

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