What Are DLLs?

แชร์
ฝัง
  • เผยแพร่เมื่อ 14 ก.พ. 2022
  • Try FreshBooks free, for 30 days, no credit card required at www.freshbooks.com/techquickie
    What are those mysterious DLL files that are omnipresent in Windows - and have often caused problems, especially in older versions?
    Leave a reply with your requests for future episodes, or tweet them here: / jmart604
    ► GET MERCH: lttstore.com
    ► AFFILIATES, SPONSORS & REFERRALS: lmg.gg/tqsponsors
    ► PODCAST GEAR: lmg.gg/podcastgear
    ► SUPPORT US ON FLOATPLANE: www.floatplane.com/
    FOLLOW US ELSEWHERE
    ---------------------------------------------------
    Twitter: / linustech
    Facebook: / linustech
    Instagram: / linustech
    TikTok: / linustech
    Twitch: / linustech
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 1K

  • @unvergebeneid
    @unvergebeneid 2 ปีที่แล้ว +2003

    Fun fact, printer drivers are the only DLLs whose functioning directly depends on the phase of the moon and the number of black cats you recently crossed.

    • @acostasanchez1
      @acostasanchez1 2 ปีที่แล้ว +92

      I hate printers 🖨

    • @Gimp2288
      @Gimp2288 2 ปีที่แล้ว +74

      Printer DLLs are the true DLL Hell, everything else is just the Disney Halloweentown version.

    • @potatomongrel
      @potatomongrel 2 ปีที่แล้ว +34

      Oh hell no I'm getting IT PTSD from the times I had to search for and sift through dlls and drivers for business printers and lab label makers. Fuck HP Xerox Zebra Brother.

    • @maxcharacterlimitreache-
      @maxcharacterlimitreache- 2 ปีที่แล้ว +18

      It puzzles me how easy and documented is every setup and interaction with 3d printers, most after market modifications to them etc, but if you want to use a printer it's completely god's mercy if it works or you're able to get drivers for older ones(>5 years old).
      And let us not get started with proprietary hardware and parts.
      Is it even there an open source printer that just gets the job done?

    • @unvergebeneid
      @unvergebeneid 2 ปีที่แล้ว +6

      @@maxcharacterlimitreache- I mean to be fair, postscript printers are a lot less trouble than the ones with proprietary protocols. That being said, less trouble is not no trouble.

  • @QuantumQuantonium
    @QuantumQuantonium 2 ปีที่แล้ว +2269

    Might be a bit too advanced for techquikkie but a video explaining the overall structure of the windows OS (and Linux maybe as well) could be interesting. Like the kernel, registry, windows folder, COM system, dlls, services

    • @LVIS-a
      @LVIS-a 2 ปีที่แล้ว +12

      Sounds like you don't need an explanation for any of that XD like most of LTT viewers I presume

    • @LimaXv2
      @LimaXv2 2 ปีที่แล้ว +9

      @@aaronwestley3239 i doubt that even cuts it close, but if you have read through at least 200 pages of the 5000 page dev manual from intel i'll respect that :D

    • @obinator9065
      @obinator9065 2 ปีที่แล้ว +17

      It’s way too advanced. You need entire lectures for this stuff. I have a 900 page book lying around which still doesn’t cover everything.

    • @AuroraAce.
      @AuroraAce. 2 ปีที่แล้ว +25

      @@obinator9065 you don't need to cover everything just basics but I agree it would be ridiculously long even if incredibly simplified

    • @r4dr4bbit46
      @r4dr4bbit46 2 ปีที่แล้ว

      me likey

  • @AshtonSnapp
    @AshtonSnapp 2 ปีที่แล้ว +250

    On other platforms:
    - Mac: dylib (dynamic library)
    - Linux: so (shared object)

    • @KyuVulpes
      @KyuVulpes 2 ปีที่แล้ว +27

      You are partially right with the Shared Object. Linux does you it, but that isn't a Linux-exclusive library file. A shared object file is a Unix file, which is why Linux uses it along with, macOS. There are folders in the root of macOS that are hidden, but if you show hidden folders (or use the terminal), you will see in macOS that there are /lib, /usr, /bin, etc. I've taken a look inside the /lib folder of macOS and found a bunch of .so files. Which can be traced to the fact that macOS is based off BSD, which was based off Unix. So macOS uses both dylib and so.

    • @AshtonSnapp
      @AshtonSnapp 2 ปีที่แล้ว +5

      @@KyuVulpes I didn’t know that last part. But the main reason I mentioned shared objects with Linux is that that’s the most common *nix OS where you’re likely to see them.

    • @tamoozbr
      @tamoozbr 2 ปีที่แล้ว

      @@KyuVulpes actually BSD is *NIX (UNIx-like) and not based on Unix

    • @davidbonner4556
      @davidbonner4556 2 ปีที่แล้ว +8

      @@tamoozbr Linux is based off of AT&T unix. MacOS is based on BSD, which stands for Berkeley Software Development. BSD unix is based off of the AT&T unix source code that was available to Universities when unix only ran on mainframes. BSD heavily relied on the source code but they wrote it differently and changed the way many parts worked entirely based on experimentation.

    • @galax5130
      @galax5130 2 ปีที่แล้ว

      .so is right i don't know about mac

  • @cyrus9056
    @cyrus9056 2 ปีที่แล้ว +791

    DLL hell is something that anyone who regularly pirates games should be completely familiar with. I have so many memories of spending hours just hunting down and fixing all of the DLLs so that a pirated game works properly

    • @r4dr4bbit46
      @r4dr4bbit46 2 ปีที่แล้ว +201

      dx3d and msvcr001

    • @bomberharris9322
      @bomberharris9322 2 ปีที่แล้ว +78

      Same here, I remember trying to download DLLs from sketchy websites and somehow they'd work but not until I ran into another DLL problem.

    • @_denzy_6310
      @_denzy_6310 2 ปีที่แล้ว +108

      Or the worst 0x00007b 😂

    • @sexyguy3647
      @sexyguy3647 2 ปีที่แล้ว +58

      Yep. You'd download 1 DLL, open the game a new DLL error, pops up you then find that DLL too and repeat 10 times for the game to work

    • @TakumisBizarreRacingAdventure
      @TakumisBizarreRacingAdventure 2 ปีที่แล้ว +18

      Uhh I'm not sure we're supposed to talk about this here.....

  • @rajm1976
    @rajm1976 2 ปีที่แล้ว +827

    Programs tend to fail at accessing DLLs when the function it wants to run doesn't look the same as it expects. It's function signature is different. This can be avoided with function overloads in newer versions of the DLL. This means that the old code or function signature still exists to maintain backwards compatibility while still being able to update existing DLLs. You can find dll code that goes way back to Windows 95 in Windows 10.

    • @Peak_Stone
      @Peak_Stone 2 ปีที่แล้ว +29

      @sitiy "24" What does this say about the world. An advert by a modern day "Ho", carfully crafted as to avoid an algorithm that wants to delete it.
      It's amazing to see the replication of the Cell/Virus relationship replicted earnestly, in the new digital world.

    • @Rodrigo-me6nq
      @Rodrigo-me6nq 2 ปีที่แล้ว +11

      That sounds like a bad idea, overloaded functions have mangled names so you would have a hard time calling them from c. Why not just give the function a new name if the signature is going to be different?

    • @project5799
      @project5799 2 ปีที่แล้ว +24

      "This can be avoided with function overloads in newer versions of the DLL" is not the correct terminology, DLLs don't actually deal with functions but with symbols, and there can never be such a thing as a duplicate symbol, as far as the linker is concerned function overloads like those in C++/C# etc. are all different symbol and they don't even exist in C, if you ever wrote code using the WinAPI you would be very aware of this as there are a lot of function with names like Ex or 2, these functions were added in newer windows versions to support newer functionality or better interfaces without breaking old code, if you want a better explanation about this topic google for "ABI" or "Application binary interface".

    • @rajm1976
      @rajm1976 2 ปีที่แล้ว +7

      @@project5799 Thanks. I was thinking more from a coding perspective. At work we have a policy to use overloaded functions to maintain backwards compatibility

    • @qzbnyv
      @qzbnyv 2 ปีที่แล้ว +13

      @@Peak_Stone it’s called a bot, not a “Ho”. and they link out to scam sites, not to anything real.
      probably no women involved to even call a “Ho”, unless some photos were stolen fren social media to make the scam site look like a real one.

  • @billpotter9716
    @billpotter9716 2 ปีที่แล้ว +123

    As a mature programmer, this video tickled a happy nerve. Early PCs had so few resources compared with today. For example, the memory (usually 640KB or less, not MB) was segmented, meaning that programs could only use 64K, without jumping through major hoops. Trying to share DLLs was a horrible (and thankfully temporary) solution to the memory problem. Death to the GAC!

    • @ikbintom
      @ikbintom 2 ปีที่แล้ว +1

      So DLLs were already not really necessary anymore in the early Windows 9x era?

    • @billpotter9716
      @billpotter9716 2 ปีที่แล้ว +8

      @@ikbintom Hi Tom. Thanks for the reply. I don't know the answer to that. I was just reminiscing about the challenges of dealing with crazy memory limitations. DLLs are still useful and necessary.

    • @UncleKennysPlace
      @UncleKennysPlace 2 ปีที่แล้ว +6

      @@ikbintom They probably weren't, but we used them, as six of our apps shared functions. Of course, the first go produced a .dll that had a name so common it got replaced by an update to a different program. You could do stupid things back then.

    • @ikbintom
      @ikbintom 2 ปีที่แล้ว +1

      @@UncleKennysPlace sounds like a lot of fun 😅

    • @mgord9518
      @mgord9518 9 หลายเดือนก่อน

      ​​@@ikbintomDepends on what you consider necessary.
      Shared libraries (.dll on Windows, .so on Linux, etc) mainly exist to lower disk and RAM usage because many programs share code.
      Say program X, program Y and program Z all need to load PNG images, it generally makes more sense for them all to link to one single libpng than to each have that same PNG loading code replicated 3 times.

  • @ThEASbO
    @ThEASbO 2 ปีที่แล้ว +101

    I'm a C++/C# dev so .dll's are really important to me. You did a good job explaining such a beast of a topic!

    • @ikbintom
      @ikbintom 2 ปีที่แล้ว

      Are they still used a lot?

    • @ThEASbO
      @ThEASbO 2 ปีที่แล้ว +2

      @@ikbintom not directly...possibly in the background for some libraries or engines but most of my recent experience has been with people swaying towards web and mobile apps. If you are a windows user, your browser definitely has dll's it uses.

    • @sacredgeometry
      @sacredgeometry 9 หลายเดือนก่อน

      Same ... I dont know why I clicked this video :D

    • @sacredgeometry
      @sacredgeometry 9 หลายเดือนก่อน +3

      @@ikbintomYeah our code gets built into dlls ... so they are used every time we hit build.

    • @mgord9518
      @mgord9518 9 หลายเดือนก่อน

      ​​@@ikbintomYes, actually all Windows programs need to use DLLs even if they aren't packaged with the program. In Windows, every program must link to kernel32.dll, which is a system library allowing access to basic OS functionality in order to run at all. As far as packaging DLLs (which is really the only time they can be problematic), any large application probably has some included.
      Linux is the only common OS which doesn't strictly require dynamic linking due to some technical choices, although an overwhelming majority of Linux apps also use shared objects (the Linux version of DLLs) because of their advantages.

  • @avrahamhollander9296
    @avrahamhollander9296 2 ปีที่แล้ว +95

    Not only does dynamic linking save memory compared to a statically compiled binary, but it also saves disk space for the exact same reason. Only one copy of the library for all programs.

    • @kanta32100
      @kanta32100 2 ปีที่แล้ว +2

      It does not save memory, every program loads it's own copy of every DLL. It can be dynamicaly lodaded and unloaded.

    • @avrahamhollander9296
      @avrahamhollander9296 2 ปีที่แล้ว +26

      @@kanta32100 That's wrong. Linus explains it in the video. With dynamic linking, there is only one copy on disk, and only one copy in memory. You are describing static linking, where there is one copy per program on disk and in memory.

    • @avrahamhollander9296
      @avrahamhollander9296 2 ปีที่แล้ว +10

      @@kanta32100 In Unix-like systems, we call them "shared objects." It's a better description, because it makes it clear that multiple programs literally "share" a single copy of the library in memory.

    • @kanta32100
      @kanta32100 2 ปีที่แล้ว +2

      @@avrahamhollander9296 He is wrong.

    • @kaseyboles30
      @kaseyboles30 2 ปีที่แล้ว +7

      @@kanta32100 Depends a bit. More and more It's like Linus said, but there is still old code that causes 1 instance per program using a dll. Although it does continue to look like each program has it's own separate copy in ram depending on how you check.

  • @SRC267
    @SRC267 2 ปีที่แล้ว +67

    This becomes an issue with memory integrity switched on in Windows 10/11 - some old DLLs stop functioning and need updating.

  • @gawbe
    @gawbe 2 ปีที่แล้ว +35

    DLL Hell is another level of tech humor.

  • @PederLindbergMN
    @PederLindbergMN 2 ปีที่แล้ว +18

    I've been coding since 2010 and have never even thought about overriding a system DLL. For many years now each application either uses built in standard DLLs or provides there own in their installation directory, completely separate from the rest of the system.

    • @ABaumstumpf
      @ABaumstumpf 2 ปีที่แล้ว +1

      Well, some people just did it the quick and dirt way "hey, i need function but with a small tweak - lets just use the library and update the function with what i want".
      The registry and other settings had similar problems (the dreaded media-codes on windows - uninstalling 1 could break all).

  • @magicg8112
    @magicg8112 2 ปีที่แล้ว +32

    As a software engineer, I want to compliment you on how, in such a short segment, you covered this topic. Great job.

  • @Monado.
    @Monado. 2 ปีที่แล้ว +13

    Man the fact you put the Razer Comms Logo at 0:48 really brings back some memories. Used it before Discord became a thing and my friend group were sick of using Skype.

    • @UchihaAlpha
      @UchihaAlpha 2 ปีที่แล้ว +1

      RIP Razer comms. Green and glorious

  • @The_Horse-leafs_Cabbage
    @The_Horse-leafs_Cabbage 2 ปีที่แล้ว +59

    I've become weirdly familiar with DLL files, since most VSTs (music software plug-ins and synths) come in the form of.dll files.

    • @joederbyshire_
      @joederbyshire_ 2 ปีที่แล้ว +13

      its mainly vst3 nowadays but I remember the huge amounts of dlls on my computer when vst2 was bigger

    • @MichaelCoombes776
      @MichaelCoombes776 9 หลายเดือนก่อน

      @@joederbyshire_ the DAW load times when scanning all the free VSTs I downloaded.... fun times.

    • @aqua3418
      @aqua3418 9 หลายเดือนก่อน +2

      All VST's are DLLs, including VST3. They just simply renamed the extension to be cooler

  • @doriondouglas6176
    @doriondouglas6176 2 ปีที่แล้ว +19

    I remember trying to make my own mod for a game but there were very few tutorials and none explained the basic principles like how it needed to be written as a DLL to access the games engine and the games SDK, and to link it to my custom code, so I learned a lot about DLL's by figuring out how to make it work.

  • @lordechnobas
    @lordechnobas 2 ปีที่แล้ว +52

    tldr; programs can dynamically load and unload code, allowing programs to patch vulnerabilities or change functionality by just replacing the code loaded. the code loaded is stored in a shared object (.so) on linux and a dll on windows (.dll)

    • @Secondarian
      @Secondarian 2 ปีที่แล้ว

      *GNU, not Linux. It doesn't depend on the kernel, .so files are used on the GNU operating system. GNU/Busybox systems use .so files as well.

    • @lordechnobas
      @lordechnobas 2 ปีที่แล้ว +8

      @@Secondarian does alpine not have shared objects? when i refer to linux i refer to the general standard common amongst linux distributions, which may or may not contain the GNU coreutils

    • @Watchandlearn91
      @Watchandlearn91 2 ปีที่แล้ว +6

      @@lordechnobas I'd ignore him. Some people just like to correct other people. Everyone else knows exactly what you meant by saying Linux.

    • @richmahogany1710
      @richmahogany1710 2 ปีที่แล้ว +4

      @@Secondarian I'd just like to interject for a moment. What you’re referring to as Linux, is in fact, GNU/Linux, or as I’ve recently taken to calling it, GNU plus Linux. Linux is not an operating system unto itself, but rather another free component of a fully functioning GNU system made useful by the GNU corelibs, shell utilities and vital system components comprising a full OS as defined by POSIX. Many computer users run a modified version of the GNU system every day, without realizing it. Through a peculiar turn of events, the version of GNU which is widely used today is often called “Linux”, and many of its users are not aware that it is basically the GNU system, developed by the GNU Project. There really is a Linux, and these people are using it, but it is just a part of the system they use. Linux is the kernel: the program in the system that allocates the machine’s resources to the other programs that you run. The kernel is an essential part of an operating system, but useless by itself; it can only function in the context of a complete operating system. Linux is normally used in combination with the GNU operating system: the whole system is basically GNU with Linux added, or GNU/Linux. All the so-called “Linux” distributions are really distributions of GNU/Linux.

    • @lawrencedoliveiro9104
      @lawrencedoliveiro9104 2 ปีที่แล้ว +2

      @@richmahogany1710 “On top of the operating system is the rest of the system software. Here we find the command interpreter (shell), window systems, compilers, editors, and similar application-independent programs. It is important to realize that these programs are definitely not part of the operating system, even though they are typically supplied preinstalled by the computer manufacturer, or in a package with the operating system if it is installed after purchase. This is a crucial, but subtle, point. The operating system is (usually) that portion of the software that runs in kernel mode or supervisor mode. It is protected from user tampering by the hardware ...”
      -- Tanenbaum & Woodhull, “Operating Systems Design And Implementation”, third edition, page 3
      That is the well-known “MINIX Book”, by the way. So you see, by that definition, Linux is very definitely an ”operating system”.

  • @dominikschropp
    @dominikschropp 2 ปีที่แล้ว +13

    I needed this video one week ago, as I had an issue with old testing equipment at our company using Dlls.
    Great video👍

  • @habib_khan
    @habib_khan 2 ปีที่แล้ว +10

    Thank you for bringing such informative short videos

  • @SpaYco
    @SpaYco 2 ปีที่แล้ว +18

    for web devs, a dll is like an NPM package, and most of those errors u get are from "global"' packages that are in the windows system.

  • @HarmonicaMustang
    @HarmonicaMustang 9 หลายเดือนก่อน +2

    I'm a sysadmin, so my focus is on making sure compatibility is maintained. I didn't have to know how DLLs work, but it's fascinating and gives me a better understanding of why problems I come across happen.
    On a similar topic, you guys should talk about Group Policy. It's an essential tool to my everyday work, and even on a consumer level it lets you work around limitations in some scenarios, like modifying personalisation options on an unlicensed copy of Windows. At its core, it's a bunch of XMLs that give blueprints for modifying the registry, so it's not a terribly complicated system.

  • @pritamgaming7741
    @pritamgaming7741 2 ปีที่แล้ว +7

    Ahhh yes..... The GTA San Andreas nightmare.

    • @NearLWatson
      @NearLWatson หลายเดือนก่อน +2

      Any pirated game, software.

  • @chirantannath6593
    @chirantannath6593 2 ปีที่แล้ว +7

    Fun fact: almost all OSes use a similar concept. In Linux these are called Shared Objects (SOs).

  • @512TheWolf512
    @512TheWolf512 2 ปีที่แล้ว +4

    4:32 DIRECOTR - typo in the credits :) Better tell Mr. Potvin about his quality controlling

  • @igordasunddas3377
    @igordasunddas3377 2 ปีที่แล้ว +1

    I knew all this (obviously as a developer I should), but I love how simple and visual you explain it! Amazing work, Linus and your Team are doing!

  • @LMinett
    @LMinett 2 ปีที่แล้ว +3

    Well written and thoroughly explained for a general audience. Good job

  • @SanderEvers
    @SanderEvers 2 ปีที่แล้ว +8

    Basically dlls are like exe files except they are not executable on their own.

    • @kaseyboles30
      @kaseyboles30 2 ปีที่แล้ว +1

      There are a few that can be renamed to .exe and run. At least there used to be. Though some were just utility suites that installed the same thing both ways so other products could use some of the features as needed.

  • @levoniust
    @levoniust 2 ปีที่แล้ว

    This was great, I hope you keep doing more of the file types.

  • @thatsgottahurt
    @thatsgottahurt 2 ปีที่แล้ว +1

    It would be awesome to see a whole series on file types. Or even an LTT video doing a bit deeper dive on file types.

  • @Sparky610
    @Sparky610 2 ปีที่แล้ว +6

    2:03 why not "dlHell"

  • @SamarthCat
    @SamarthCat 2 ปีที่แล้ว +4

    2:52 Managed DLLs have version numbers in their metadata so programs can actually know if it is the correct version. I'm pretty sure unmanaged DLLs also have a similar system.

  • @OneWeirdGuy
    @OneWeirdGuy 2 ปีที่แล้ว

    Thanks for summing this up, I’ve been working with dlls for so long with games and it’s nice to finally know what I’ve been working with lol.

  • @Yevgen4000
    @Yevgen4000 2 ปีที่แล้ว

    4:24 Thanks, Linus, I needed that.

  • @RyanWAFFELYoung
    @RyanWAFFELYoung 2 ปีที่แล้ว +5

    This is an excellent primer and lead in for a video explaining the differences on linux, and what WINE/Proton does to allow windows games to run on linux.

    • @ForOdinAndAsgard
      @ForOdinAndAsgard ปีที่แล้ว +2

      Well that is very simple isn't it. When you would install a Windows program onto Linux that program will make calls for dll Linux does not have. Wine and Proton for that matter make a software layer in between in which those dll can exist and can be called upon. This will create an output which Linux can use.
      Now comes the problem:
      Most dll are closed source so we cannot see what is going on in there and simply copying them for use will cause a major lawsuit. We can see the input and the output however and as thus reverse engineer software which can do this for us like Wine and Proton. With this comes minor discrepancies in certain programs and hence not all programs will run using Wine or Proton.
      I am going in circles now and really the process is as well as every time we solve a dll for use with Wine or Proton a new one will be born. That is why it is so incredibly difficult to get MS or Adobe software to work on a Linux system as they tend to use new dll every time a new version comes out and we will always be running behind the facts.
      On the other hand this means that the older the software the bigger the change it will work on Wine or Proton. We see this very clearly with old Windows games which are no longer playable on the current Windows version but work fine with Wine or Proton on Linux out of the box.
      Command & Conquer: The first Decade being a fine example if you have the Windows XP disc version. It will not run on Windows 10 or 11 but it will on any Linux distribution as long as you meet the specs and you know how to use Wine. Generals will need some tinkering with a no-cd crack but it will all work.

  • @reigndespair7053
    @reigndespair7053 2 ปีที่แล้ว +17

    DLLs are also good for 3rd party fixes for software also. Usually some assembly edits to executible files are also used to use new DLLs for this purpose.

  • @ronalsanchez324
    @ronalsanchez324 5 หลายเดือนก่อน

    Thanks bro I’m studying for Sec Plus and this really helped me understand DLLs

  • @damnedtosuffer666
    @damnedtosuffer666 2 ปีที่แล้ว

    THANK YOU you have no idea how confused I get on why most of my games, that I’ve played a lot, randomly telling me it’s missing a DLL despite me never messing with the files

  • @pjf674
    @pjf674 2 ปีที่แล้ว +6

    1:23 NirSoft should get a Nobel Peace Prize or sainthood or something. So many useful tools.

  • @zan5051
    @zan5051 2 ปีที่แล้ว +3

    I love this format!!! This is exactly the kind of stuff that can help bring people who believe they have -100 TechKnowledge to a much more reasonable +20.

  • @pengchengwu447
    @pengchengwu447 2 ปีที่แล้ว

    That helps clarify things quite a bit.

  • @BlakeTechnology99
    @BlakeTechnology99 2 ปีที่แล้ว

    You literally uploaded this fater it came up in my IT classes today. Thanks for helping me with my homework Linus

  • @fakeduck4474
    @fakeduck4474 ปีที่แล้ว +5

    "dll hell" or for short "dell"

  • @pankake42
    @pankake42 2 ปีที่แล้ว +3

    DLL's are also commonly used for VST plugins, at least before the VST3 standard became a thing. It's REALLY handy when working in music production or audio engineering. LOVE DLL's!

    • @aqua3418
      @aqua3418 9 หลายเดือนก่อน

      VST3's are also DLL's. They just simply renamed the extension

  • @plgDavid
    @plgDavid 2 ปีที่แล้ว

    25 years of windows dev here and was expecting to be disappointed, but no. Straight important stuff, well delivered

  • @vladislavkaras491
    @vladislavkaras491 2 ปีที่แล้ว

    Great, quick and informative video!
    Thanks!

  • @MasoodOfficial
    @MasoodOfficial 2 ปีที่แล้ว +18

    Informative!

    • @DTunezOfficial
      @DTunezOfficial 2 ปีที่แล้ว +2

      You didnt even watch the video, unless you can watch 5 minutes in one minute

  • @staxom
    @staxom 2 ปีที่แล้ว +3

    2:39 ad over

  • @dglr4021
    @dglr4021 ปีที่แล้ว

    Bravo et merci : vos explications sont super clairs !

  • @noxiousophidian9634
    @noxiousophidian9634 2 ปีที่แล้ว

    Frankly, a techquickie I loved from start to end after quite some time

  • @cassolmedia
    @cassolmedia 2 ปีที่แล้ว +21

    Hey Linus, just a heads up I guess, as someone who's usually watching youtube on a tv app, ending videos abruptly usually means I don't get around to clicking like. I guess it's just less intuitive on a tv where the like button isn't always visible, and the post ad literally wont allow me to like the video.
    just something I noticed, as I prepared my remote to bring up the menu to click like and then the video was gone haha

  • @rkvkydqf
    @rkvkydqf 2 ปีที่แล้ว +6

    Fun fact: if you encounter .so files on Linux, you should know they are the closest thing to Windows's .dll.

    • @redpheonix1000
      @redpheonix1000 2 ปีที่แล้ว

      And also because if you delete them and things break, you're sol

    • @tamoozbr
      @tamoozbr 2 ปีที่แล้ว

      It's SO, not SOL

    • @rkvkydqf
      @rkvkydqf 2 ปีที่แล้ว

      @@tamoozbr Thanks.

    • @tamoozbr
      @tamoozbr 2 ปีที่แล้ว

      @@rkvkydqf np

  • @TBerq
    @TBerq 2 ปีที่แล้ว

    Congratulations on 4M subs!

  • @sofiandeclercq1818
    @sofiandeclercq1818 9 หลายเดือนก่อน

    Thanks for this. I learned something

  • @nikm5628
    @nikm5628 2 ปีที่แล้ว +3

    I remember most DLL errors being due to Direct X or .NET software not being installed...

    • @johngangemi1361
      @johngangemi1361 2 ปีที่แล้ว

      Or the Visual C++ Runtime libraries.

    • @nikm5628
      @nikm5628 2 ปีที่แล้ว +1

      @@johngangemi1361 Ah, yes, that too. The big 3 demons of "muh gaem wown't sturt"

  • @Eli-zb2yj
    @Eli-zb2yj 2 ปีที่แล้ว +4

    Fan fact: if you delete system32 your pc wont work

  • @boxxwiition2928
    @boxxwiition2928 2 ปีที่แล้ว +1

    ITS ABOUT DMN TIME SOMEONE EXPLAINED THIS!
    GOOD JOB LINUS!

  • @ajoebo9095
    @ajoebo9095 2 ปีที่แล้ว

    Nicely explained. Thanks

  • @interstellarsurfer
    @interstellarsurfer 2 ปีที่แล้ว +5

    Linus looks more and more like a pirate every day. 😉🏴‍☠️

  • @PulsYT
    @PulsYT 2 ปีที่แล้ว +5

    Nice video, but maybe make a video about DLL injection and how it’s used for game hacking?

    • @Velmi_r
      @Velmi_r 2 ปีที่แล้ว +2

      game gets forced to load the DLL containing code, cheat program can then send messages to the game via the DLL to do whatever it wants (cheats)

    • @nullpointer1755
      @nullpointer1755 2 ปีที่แล้ว +1

      @@Velmi_r But how can we force a game to load the DLL? Disassembly the binary and creating a modified version?

    • @Velmi_r
      @Velmi_r 2 ปีที่แล้ว +1

      @@nullpointer1755 there are many free DLL injectors out there, even process hacker 2 has one.
      idk how it exactly works but it does

    • @jakubsebek
      @jakubsebek 2 ปีที่แล้ว +2

      @@nullpointer1755 you just replace the library with a handcrafted one. Unless the application is being extra careful (and even if it is, it can likely be circumvented), all it cares about is the file name, if it finds a "SDL2.dll", it happily loads it. If our handcrafted DLL acts like the original well enough (aka: exposes the original API correctly), the application has no idea it's not legitimate. This is the most naive method and there are better and more fine-grained ones, like tinkering with the dynamic code at program runtime.

  • @Nathan123Bhi8
    @Nathan123Bhi8 2 ปีที่แล้ว +1

    Linus : DLLs are useful for saving RAM
    Chrome : I know nothing about that

  • @andrekz9138
    @andrekz9138 2 ปีที่แล้ว

    Wow, this video had impeccable timing. I JUST read up on DLL issues yesterday after reading TechTechPotato's interview with Miguel Nunes from Qualcomm.

  • @kuiyez8723
    @kuiyez8723 9 หลายเดือนก่อน +2

    so thats why its perfect for malware

  • @angumech13
    @angumech13 2 ปีที่แล้ว +3

    DLLs are library files

  • @maleeshapriyanjana7604
    @maleeshapriyanjana7604 6 หลายเดือนก่อน

    Great explanation.simple.

  • @treescompany3462
    @treescompany3462 2 ปีที่แล้ว

    These are the videos we need. This and Anthony's "what can I use from Dollar Tree?" video

  • @H76Pro
    @H76Pro 2 ปีที่แล้ว +3

    I feel this video should have been made 20 years ago. I don't remember the last time I got a dll error, unless I use legacy software.

  • @lawrencedoliveiro9104
    @lawrencedoliveiro9104 2 ปีที่แล้ว +3

    Windows “DLL Hell” is down to two limitations of the Windows architecture: lack of shared-object versioning, and lack of integrated package management†. Trying to work around these by locking down files just causes its own problems. As for integrated package management, Microsoft has created Winget, but nobody wants to use it.
    †Both of which are commonplace in Linux systems, naturally.

    • @chat-1978
      @chat-1978 2 ปีที่แล้ว +1

      It's not the same. Indeed Windows never enforced strong names on DLLs. .net did with gac but that was specific to. Net which led to other problems. Winget, like choco is a package manager of installable artifacts (e.g. MSI) and has not much to do with DLLs because they are managed by the MSI. I simplified it but you mixed different things

    • @lawrencedoliveiro9104
      @lawrencedoliveiro9104 2 ปีที่แล้ว +1

      Now you begin to understand what I mean by “integrated”. On Linux, packages manage *everything* -- executables, libraries, scripts, even non-executable data like fonts, icons and documentation. You don’t need different installers for different things.

  • @awaisbaig540
    @awaisbaig540 2 ปีที่แล้ว +1

    Make one on library routines & on compiler & interpreter

  • @ExtremeWays4Bourne
    @ExtremeWays4Bourne 2 ปีที่แล้ว

    No one does it like Linus. Always a joy to watch.

  • @philosoaper
    @philosoaper 2 ปีที่แล้ว +4

    ah yes.. I remember those good old days of DLL hell and linux users using it to bash windows.. and as the linux scene grew and split into hundreds of distros over the years.. there's now a fairly large "dependencies" issue with different versions of libraries that different software needs and the DLL issues of windows are now pretty rare.. ah yes.. the good old "learning from other peoples mistakes"-lesson...or not learning as is the case here..

  • @csaratakij6339
    @csaratakij6339 9 หลายเดือนก่อน +4

    Linus again, pretending to know anything about programming stuff.

    • @hampus23
      @hampus23 9 หลายเดือนก่อน

      Yeah 😂

  • @swimskim5874
    @swimskim5874 2 ปีที่แล้ว

    Thanks for making this video, what an interesting topic

  • @imranhameed9189
    @imranhameed9189 2 ปีที่แล้ว

    Not only infotech, you are a great teacher

  • @rafeeqshaikh6430
    @rafeeqshaikh6430 ปีที่แล้ว

    Very well explained!!❣

  • @hagidekuh
    @hagidekuh 2 ปีที่แล้ว

    thank you Mr Linus tip techs, I actually was wondering this for a while but never remembered to ggole it

  • @lancegabionza7287
    @lancegabionza7287 2 ปีที่แล้ว +1

    man of culture use this extension to camouflage a very important file.

  • @sureshchinnuswamy8628
    @sureshchinnuswamy8628 ปีที่แล้ว +1

    Hi I am Suresh from India,,Tamilnadu...I like this video...fully informative one.tq you guy..

  • @aroncanapa5796
    @aroncanapa5796 2 ปีที่แล้ว

    Omg I want more stuff like this

  • @Starfals
    @Starfals 2 ปีที่แล้ว +1

    I still have to download those sometimes... i dunno why but every now and then a game would need them. Good thing there are many websites that let you get them, even from microsoft.

  • @DemeDemetre
    @DemeDemetre 2 ปีที่แล้ว

    very well explained!

  • @TacticalFluke09
    @TacticalFluke09 2 ปีที่แล้ว +1

    that outro really got to me - I just upgraded from 32 to 64gb and have been feeling bad about my decadence ever since! I literally ran out one day at work though, so sue me

  • @kristianbakhandskemager7039
    @kristianbakhandskemager7039 2 ปีที่แล้ว

    Literally just had a DLL problem 3 days ago, got it fixed though, but this video came at good time :)

  • @Lance_MadCat
    @Lance_MadCat 2 ปีที่แล้ว

    Got guilt tripped into liking and subscribing... and I liked it and subsribed hahaha, can't imagine not being subbed and watching you nearly every day xD

  • @john-paultolczyk2434
    @john-paultolczyk2434 2 ปีที่แล้ว

    thanks for the very informative info and is very helpfully thanks. 😉

  • @Ukepa
    @Ukepa 9 หลายเดือนก่อน

    good info... another mysterious subject demystified!

  • @jeevans3810
    @jeevans3810 2 ปีที่แล้ว

    My team made a game , i took care of the sound library dlls , i understood a lot when building games like static linking .

  • @ChristiaanRock
    @ChristiaanRock 2 ปีที่แล้ว

    very cool vid, nice and short and give's insight into something I thought I understood completely, but once again. Linus show's the way.

  • @XXX-XX-X-X
    @XXX-XX-X-X 2 ปีที่แล้ว +1

    You can version your DLLs pretty easily. In one game engine I had compiled visual scripts into C++ and then compiled them further into a bunch of loose DLLs. From there the app would rely on a function to get a version number and use one of multiple different loading routines or fail if the DLL was newer than the application.
    The problem with versioning comes in when 1) developers presume a specific DLL version without checking 2) if the DLL offers no such functionality to check it's version or 3) the DLL developer messes up the versioning and makes a breaking change without modifying the version.

    • @angolin9352
      @angolin9352 2 ปีที่แล้ว

      Fellow SW dev here. Why would you code it like this? Were you just too cool to stick to one particular version of a library? Just because you can do something, and it shows your chops that you can do it, doesn't mean you should. See also: reflection.

    • @XXX-XX-X-X
      @XXX-XX-X-X 2 ปีที่แล้ว

      @@angolin9352 The purpose of compiling visual scripts was performance and memory, reflection isn’t a good option. Not to mention we had almost no data to work with, it was (except for a few scripted constants) entirely functional.
      Handling version differences was crucial as engine side developers add scripting features in main and content creators (making scripts) worked with stable versions of tools roughly one week behind while still in main. This is very common in AAA games.
      We didn’t version our dlls to jerk each other off, lmao.

    • @ABaumstumpf
      @ABaumstumpf 2 ปีที่แล้ว

      @@angolin9352 Hu.. why might a programmer resort to versioned DLLs... how about for VERSIONING!?!?
      There are docents of reasons why you might want to have DLLs that you can identify the version of, not the least would be for providing further functionality later on or fixing bugs/vulnerabilities.

  • @chatchaweewong1071
    @chatchaweewong1071 2 ปีที่แล้ว

    very useful, Thanks

  • @vishwajeetbabbar7622
    @vishwajeetbabbar7622 2 ปีที่แล้ว

    I was working on making DYLIBS n DLL cross platform just past week n now linus brought a good brief on the topic!

  •  2 ปีที่แล้ว

    There is also "musl" like projects to compile software without depending into any dynamic linked library.

  • @peterenis4107
    @peterenis4107 2 ปีที่แล้ว +2

    I wonder if I delete “comdlg32.dll” could windows bring me an actual dialog message where it says that some other .dll is missing?

  • @grexursorum6006
    @grexursorum6006 2 ปีที่แล้ว

    Thanks a lot!

  • @WahrerKuroKiba
    @WahrerKuroKiba 2 ปีที่แล้ว

    4:24 cant believe you would call me out like that

  • @onhazrat
    @onhazrat 8 หลายเดือนก่อน

    🎯 Key Takeaways for quick navigation:
    00:00 📚 DLLs (Dynamic Link Libraries) are essential for Windows but often misunderstood.
    00:28 📚 DLLs contain shared code that multiple programs can use, improving efficiency.
    01:26 📚 Device drivers, which allow programs to interact with hardware, are often implemented as DLLs.
    02:54 🚫 DLLs can cause issues when modified or overwritten, leading to program crashes.
    03:49 🔄 Modern Windows versions have improved DLL management to prevent compatibility problems.
    Made with HARPA AI

  • @NinjaSynFrey
    @NinjaSynFrey 2 ปีที่แล้ว +1

    I never really knew what was inside a DLL file until i got into C# programming in college. Finally understood what those files really contain. And anyone with familiar with Nuget will also know that those will include DLLs in your project.

    • @NinjaSynFrey
      @NinjaSynFrey ปีที่แล้ว +1

      @@djchristian82 it’s just code that can be reused in the app or different apps.

    • @Liphi
      @Liphi 9 หลายเดือนก่อน +2

      C# DLLs aren't actual DLLs that used in windows. Those DLLs are assembled il code, like Java's jar files. They require dotnet runtime to execute, but it also make them platform independent. All of the windows' DLLs that are used for drivers, os and etc are containing compiled native code

    • @mgord9518
      @mgord9518 9 หลายเดือนก่อน

      ​@@LiphiWhich is why I find it so strange that dotnet dynamic libs use the same extension. It's a completely different file format with different system requirements. They really should've given dotnet executables a different extension as well, it always throws me off when I have an exe file I want to run under Linux and have to question whether it'll open in WINE or Mono.

  • @solairenero5023
    @solairenero5023 11 หลายเดือนก่อน

    thanks Very helpful ❤

  • @realtimecyber
    @realtimecyber ปีที่แล้ว

    Great explainer. Very relevant for cyber security, specifically malware and fileless malware loves DLLs.

  • @Trolouce2
    @Trolouce2 2 ปีที่แล้ว

    Oh man, i do not miss the days of trying to find a very specific .dll specified on an error window. Lots of sketchy sites and viruses online labeled as needed .dll's

  • @joesteadman343
    @joesteadman343 2 ปีที่แล้ว

    I was thinking about having to explain DLL's the other day.
    The most hands on and prominent use I ever had with DLL's is using hacks that you'd use an injector program to enable the hack when you opened the game client. Loooool. Man I remember spending weeks testing hacks, troubleshooting, doing more research and trying again.

  • @OhhCrapGuy
    @OhhCrapGuy 2 ปีที่แล้ว +1

    As a developer who has worked on applications from Windows 2000 Server through to today, this is a fantastically accurate. Obviously it's summed up quite a bit, but the places where things are summarized instead of explained in depth are perfect.