Windowsفرمت ها

فرمت فایل DLL چیست؟

فرمت فایل DLL و LIB و OCX مربوط به کتابخانه‌هایی است که شامل توابع، کدها و داده‌هایی است که می‌توانند به صورت همزمان توسط چندین برنامه مورد استفاده قرار بگیرند

 

فرمت فایل DLL چیست؟

فرمت (Extension) فایل DLL یک فرمت استاندارد برای ویندوز مایکروسافت بوده و مخفف عبارت Dynamic-Link Library است. فایل‌های lib و ocx و drv هم تقریباً مشابه DLL هستند. یک فایل DLL شامل توابع، کدها، منابع (تصویر، آیکون و …) و داده‌هایی است که به توسعه دهندگان و برنامه نویسان این امکان را فراهم می‌کنم با به آن‌ها لینک نموده و از توابعشان در برنامه‌های خود استفاده کنند. یکی از خواص مهم فایل‌های کتابخانه‌ای DLL این است که در یک زمان چندین برنامه می‌توانند از آن‌ها استفاده کنند درحالی که کدهایش در یک مکان ثابت قرار داشته و نیازی به گرفتن فضای بیشتر برای هر برنامه نیست.

 

چرا این فایل‌ها را کتابخانه نامیده اند؟

بگذارید مثالی بزنم: یک کتابخانه عمومی را فرض کنید که پر از کتاب‌های آشپزی و در هر یک از این کتاب‌های آشپزی یک دستور پخت نوشته شده است و افراد به کتابخانه سر زده و از آن کتاب‌ها استفاده می‌کنند. فایل‌های DLL نیز این چنین هستند؛ یعنی پر از توابع مختلف که هر یک کار خاصی را انجام می‌دهند و برنامه‌ها می‌توانند از آن‌ها استفاده کنند.

 

برنامه‌ها چگونه از این کتابخانه‌ها استفاده میکنند؟

۱- برنامه نویس در ابتدای برنامه تعریف می‌کند که با استفاده از تابع LoadLibrary خود ویندوز، کتابخانه مورد نظر را در برنامه بارگذاری کند. به همین دلیل است که اگر فایل dll مورد نظر وجود نداشته باشد، در همان ابتدا برنامه با خطا مواجه خواهد شد.

۲- وی با استفاده از تابع GetProcAddress ویندوز، فانکشن یا تابع مورد نظر خود را از فایل DLL بارگذاری کرده ویا با تابع LoadResource ویندوز، یک منبع (مثلا تصویر) را از فایل DLL بارگذاری می‌کند.

۳- برنامه آن تابع را اجرا نموده یا از منابع فایل استفاده می‌کند.

۴- در نهایت با استفاده از تابع FreeLibrary ویندوز، پس از آن که کارش تمام شد، فایل DLL را Unload می‌کند.

 

آیا توابع DLL را می‌توان به صورت مستقیم فرا خواند؟ چگونه؟

توابع DLL تنها با استفاده از برنامه‌ها و فایل‌های EXE می‌توانند اجرا شوند چون در آن‌ها می‌توان از توابع نام برده ویندوز (LoadLibrary و …) استفاده کرد. بنابراین نمی‌توان به صورت مستقیم و بدون هیچ چیزی از توابع و منابع فایل DLL استفاده نمود.

اما ویندوز برای این مشکل راه کاری را در نظر گرفته و آن ساخت یک برنامه برای اجرای این تابع‌ها است. اسم این برنامه در ویندوز RUNDLL.EXE و RUNDLL32.EXE است. این برنامه از تابع گفته شده در ویندوز به عنوان یک ورودی استفاده کرده و تابع فایل DLL که قابلیت اجرا شدن بدون مشکل را داشته باشد، فراخوانی می‌کند. نحوه استفاده از این ابزار به این صورت است:

Rundll32.exe <DLLName>,<Function> <Optional Arguments>

این دستور را می‌توان در دیالوگ Run یا خط فرمان CMD اجرا کرد. بجای <DLLName> آدرس کامل فایل DLL یا اگر در پوشه سیستم بود، تنها نام آن، بجای <Function> تابع دلخواه و بجای <Optional Arguments> پارامترهای دلخواه برای تابع انتخاب شده را وارد کنید. برای مثال، تابع OpenAs_RunDLL در کتابخانه shell32.dll را فرض کنید که باعث اجرا شدن دیالوگ Open With می‌شود. برای اجرای این دیالوگ در مسیر دلخواه فایل از دستور زیر استفاده می‌کنیم:

rundll32.exe shell32.dll,OpenAs_RunDLL C:\Users\AmirrezA\Desktop\aa.html

به همین سادگی 🙂

[blank]

مشخصات پسوند فایل DLL:

  • نوع MIME یا اینترنت مدیا تایپ: application/x-msdownload
  • طراحی شده توسط: شرکت مایکروسافت (Microsoft)
  • فرمت‌های تقریبا مشابه: OCX – LIB – DRV و EXE (درباره توابع ایستا)

امیررضا نصیری

امیررضا هستم، دانشجوی ارشد نرم‌افزار و مدیر بایت گیت و دلیکس. عاشق کامپیوتر و هر چی که بهش ربط داره! دوست دارم همه چیزو یاد بگیرم و اونا رو یاد بدم. امیدوارم از مطالب سایت استفاده کنید و لذت ببرید. » بیشتر آشنا شوید!

نوشته های مشابه

۴۷ دیدگاه

  1. سلام و تشکر ویژه بابت مطلاب مفید
    دیدم که در مورد mime نوشتین میشه بیشتر توضیح بدین چیه؟
    من روی لینک های که اشاره به یک تصویر با فرمت jpg هستند کلیک می کنم مرور گر به جای نمایش اون تصویر یه سری کاراکتر در هم و بر هم نمایش میده، ولی وقتی تصویر رو save میکنم رو هارد لوکال میشه با انتخاب برنامه مناسب بازش کرد،
    کمی تحقیق کردم حدس میزنم نوع mime تصویر مناسب نیست، یعنی چه این حرف؟
    چطوری میشه با کلیک روی لینک تصاویر خود مرورگر اونها رو نمایش بده (مثلا در یک tab جداگانه– مثل کاری که برای نمایش فایل های pdf انجام میده و اونها رو در یک tab جدا نمایش میده) ( مرورگرم موزیلا فایر فاکس هست) آیا راهی برای تنظیم این مورد هست؟

    1. سلام. اگه از سمت سرور تنظیم شده باشه که بجای نشون دادن فایل، اونو دانلود کنه، مرورگر هم دانلودش میکنه و نشون نمیده بصورت یپشفرض.
      مقادیر MIME رشته هایی هستن که به عنوان یک استاندارد برای فرمت فایل ها تعیین میشن. هنگام آپلود کردن یا دانلود کردن فایل، مرورگر و سرور به مقدار MIME توجه میکنه و طبق اون میگه که این فایل یه عکسه یا یه فایل ZIP.
      برای مشاهده تصاویر هم بهتره روی تصویر کلیک راست کنید و copy image location رو بزنید بعد لینک تصویر رو به صورت مستقیم پیست کرده و ببینیدش.

  2. بسیار ممنون و بسیار تشکر
    منظورتون سروری هست که سایت روشه؟
    خب نمیشه اونو تغییر داد؟ ( یعنی خود صاحب سرور که سایتو ساپورت می کنه یا مسئول سایت)
    موقعه آپ لود کردن چطوری mime روو تنظیم کنیم تا به جای چیزای در هم و برهم خود عکس رو (با کلیک کردن روی آن) نشون بده؟

    1. سلام. از سمت سرور، صاحبش میتونه عوض کنه ولی اینطور که معلومه صاحب خود سایت ست کرده که بجای نشون دادنش دانلود شه. یکم توضیحات فنی تر:
      صاحب سایت میاد از متادیتای Content-Disposition: attachment در هدر یا در داخل کدهای HTML از آرگامنت download (مثلا Show) استفاده میکنه و مرورگر بجای نشون دادن اونو دانلود میکنه.
      موقع آپلود کردن هم شما کاری لازم نیست انجام بدید چون مرورگر با توجه به فرمت فایل MIME استاندارد برای اونو در هدر قرار میده و لازم نیست شما تنظیمش کنید. برای مثال هنگام آپلود کردن فایل dll هدر Content-Type: application/x-msdownload هم باهاش ارسال میشه.

  3. سلام خسته نباشید امید وارم در اموزش مثل بعضی ها گدا بازی در نیاورید و حق مطلب بیان کنید خیلی خیلی ممنون

  4. یک سوال دارم در برنامه نویسی چگونه میتوان به در گاهها دسترسی داشت مثلا من میخواهم در یک برنامهام به کارت tv یاcapture دسترسی داشته باشم سئوال در سئوال بعدی که یک سئوال کرده باشم با چه برنامه ای می توان فایل dll را دید

    1. سلام. برای برقراری ارتباط با سخت افزارهای دیگه باید بلد باشید چجوری از درایورشون استفاده کنید. برای مشاهده dll ها هم میتونید از دیکامپایلرهایی مثل Reflector و ILSpy استفاده کنید.

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

    1. سلام. خوبه که به کامپیوتر علاقه دارید. به زودی آموزش های مربوط به کامپیوتر پایه رو شروع میکنم به نوشتم. البته نه به این زودیا.

  6. سلام
    آقا من تووی سیستمم آمدم یکی از این هارو (فرمت dll) رو با نات پد باز کردم حالا هرچی از اینا تووی سیستمم هست همش با آیکون نات پد میاد
    چجوری برش گردونم به حالت اولش ؟ همون آیکون دنده

    1. سلام. خط فرمان ویندوز (cmd.exe) رو باز کنید و دستور زیر رو توش اجرا کنید:
      assoc .dll=dllfile
      موفق باشید.

      1. یک راه دیگه اینه که از control panel روی گزینه default program کلیک کنید , و فرمت پیش فرضو تعیین کنید

  7. سلام
    توی برنامه plc pcs7 هنگام اجرا حدود ۲۰ خطای با عنوان عدم بارگذاری فایلهایی با پسوند dll میده که نهایتا نمیتونم برنامه رو اجرا کنم ایا راهی هست بدون نصب مجدد برنامه بتونم برنامه رو درستش کنم. همین فایلها در محل نصب نرم افزار وجود دارند ولی نمیدونم چرا ایراد میگیره؟
    لطفا پاسختون رو برام ایمیل کنید
    ممنونم

    1. سلام. فایل های dll رو به پوشه system32 ببرید ببینید درست میشن یا نه. در ضمن میتونید با regsvr هم dll ها رو رجیستر کنید.

  8. سلام
    از یه همچین فایل میخوام ایمیج بگیرم ولی ارور میده .
    با الکل ۱۲۰ و کلن سی دی امتحان کردم جواب نداد.
    اگه برنامه ای هست که میتونه این کارو انجام بده ممنون میشم راهنماییم کنی

    1. سلام. از فایل dll میخواین ایمیج بگیرین؟ مطمئنین iso یا img نیس؟ میشه بیشتر توضیح بدین؟

  9. سلام
    سالی که شما دنیا اومدی من سال دوم دانشگاه بودم
    امیدوارم همیشه هدفمند و موفق باشی
    مشکلی که من دارم اینکه اشتباهی فرمت فایل dll رو عوض کردم که در واقع کرک یک برنامه زبان بود
    و حالا نمیدونم چطور فرمتش رو برگردونم به همون فرمتی که بود
    بعد قبل از این هم یه مدت مشکل خطای rundll32.exe رو داشتم که بعد رفع شد از بس از این برنامه های رفع خطا استفاده کردم نمیدونم بالاخره چی تعمیرش کرد
    ولی به هر حال گاهی توی برنامه ها مثل دیکشنری هایی که روی لپ تاپ میریزم هنوز هم از این خطاهای dll میده که میگه missing dll
    به هر حال سوال من الان اینه که چه فرمتی رودانلود کنم که تو قسمت فرمت ها داشته باشم که بعد این فایل رو تو قسمت open with برش گردونم به شکل اولیه ش
    یعنی الان یه برنامه text reader ریختم کرکش فرمتش dllهست بعد هر چی کرک رو توی محل برنامه مربوط به صوت این برنامه کپی میکنم باز هم میگه که کرک نشده
    حالا بنظر شما کرک نشدن این برنامه ربطی به این مشکل dll داره ؟
    با تشکر

    1. سلام. پسوند فایل ها رو میتونید با تیک زدن گزینه مشاهده Extension ها در تنظیمات فایل اکسپلورر، تغییرشون بدید.
      درباره مشکل بعدیتون، بله میتونه از ناقص بودن فایل های دی ال ال خود سیستمی باشه. اگه دی ال الی پیدا نشد و خطای missing داد یا مشکل از فایل های سیستم عامله یا dll مربوطه کنار برنامه نصب نشده یا کار یه ویروس و بد افزاره.

  10. سلام
    شما با برنامه Wizcon Supervisor که برنامه جهت ارتباط با PLC صنعتی هست کار کردید؟
    سوالی که من داشتم اینه که چرا در حین کار با برنامه، نرم افزار بصورت ناگهانی بسته میشه و از برنامه خارج میشه.یا شماتیک برنامه گاهاً بصورت ناقص لود میشه.
    با تشکر

    1. سلام. متاسفانه با این برنامه ها کار نکردم. پیشنهاد میکنم لاگ هاشونو (اگه داشتن) دنبال کنید تا بفهمید که مشکل از کجاس، چون این برنامه ها تخصصی هستن.

  11. سلام گویا یکی از فایل های Dll لپتاپ من به نام cameravideo.dll پاک شده و هربار که ویندوز بالا میاد یک ارور rundll نمایش داده میشه و میگه که این فایل گم شده.نمیدونم باید چیکار کنم.لطفا راهنمایی کنید خیلی ممنون
    _____
    مسیر این فایل هم C:\users\vahid\appdata\local\cameravideo\zbin\cameravideo.dll هستش

    1. سلام. برنامه ای که برای دوربین نصب کرده بودین رو پاک کنید و از اول نصبش کنید تا این فایل dll هم نصب بشه. چون cameravideo.dll به نظر نمیاد واس ویندوز باشه یا یه جوری باشه که بشه دانلودش کرد و به صورت دستی اضافش کرد.

  12. سلام
    خسته نباشید
    من می خواستم یک نرم افزار را نصب کنم و keygen آن با فرمت dll می باشد
    چطور باید keygen را باز کنم زیرا وندوز پشتیبانی نمی کند
    باتشکر

    1. سلام. باید در مسیر نصب برنامه یا تو مسیری که معمولا تو فایل Readme گفته میشه اون فایل رو جایگزین کنید.

  13. سلام
    یه نرم افزار مخصوص به یه سنسور داریم…حالا خودمون میخوایم یه نرم افزار دیگه برای این سنسور بنویسیم…میخوایم بدونیم از کجا باید بفهمیم که آیا اون نرم افزار مخصوص به سنسور به ما API میده که از اطلاعات و امکاناتش تو نرم افزار خودمون استفاده کنیم یا نه ؟

    1. سلام. بستگی به اون سنسور و درایورش داره! اگه قطعه نایابی نباشه حتما دیتاشیت اون موجوده.

  14. سلام.من امیررضا ۱۴ساله هستم.هنوز خیلی از چیز های کامپیوتر رو نمی دونم.به نظر شما بهتره از کجا شروع کنم و چه چیزهایی رو بخونم؟

    1. سلام. والا من کامپیوتر رو به صورت استاندارد یاد نگرفتم و فکر کنم برای همه این روش مناسب باشه. پیشنهاد میکنم اول کارکرد سخت افزارهای اصلی کامپیوتر رو یاد بگیرید ولی به مباحث پیچیده وارد نشید و همینجوری قبولشون کنید در کنار این زبان انگلیسی رو یاد بگیرید چون در آینده خیلی به دردتون میخوره و حتما و حتما سعی کنید با یه زبان برنامه نویسی (مثلا VB6 یا VB.NET براتون خوبه) کار کنید همیشه.

  15. سلام
    من یک نرم افزار دارم بنام sdrmap که روی ویندوز xp اجرا میشه ولی روی win 7 اجرا نمیشه
    نرم افزار نقشه برداری است.
    این نرم افزار دارای یک فایل SVG.DRV است که همین فایل باعث عدم اجرای ان در محیط WIN7 میشه
    آیا شما می تدانید این فایل را بنحوی تبدیل کنید که ۳۲ بیتی بشه و ویندوز ۷ اونو بخونه؟؟؟

    1. سلام. ممکنه نشه ولی یه راه مطمئن داره اونم استفاده از ماشین های مجازی ساز برای استفاده از ویندوز ایکس پی تو ۷ ـه.

  16. سلام آقای مهندس
    نرم افزار به نام ARCGIS که دارای اپلیکشنی به نام GEOREFERNCE. می خواهیم این اپلیکشن را به گوگل ارث منتقل کنیم . آیا امکانش هست؟
    با تشکر

  17. خسته نباشید . یه سوال داشتم. من با انتیویروس که کامپیوتر رو چک میکنم میگه این فایل شما ویروسی است:
    cdo1754163401.dll
    حالا میخوام ببینم چون این فایل با پسوند dll پاک کردنش مشکلی داره یا نه؟
    ممنون میشم جواب بدید.
    با تشکر

    1. سلام. بستگی داره که این فایل مربوط به چی باشه. ممکنه ویروس یه فایل dll سیستمی رو اینفکت کنه و حذف کردنش مشکل بوجود بیاره. ولی من این فایل رو ندیدم و فکر کنم حذف کردنش مشکلی پیش نمیاره.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *