n message <
[email protected]>, Wolf K
To R H Breener in case you don't get it:
"DLL" stands for "dynamic link library". Every such file contains a
routine used by a program. Why are they not in the main body of the
program? a) Because they perform tasks that are not done every time
the program runs, so leaving them on the disk saves RAM space; b) to
make it easier to fix bugs; c) to avoid including code for tasks or
routines etc used by several programs.
HTH
c) was, I always thought, the main justification for DLLs when they
were first brought out. But the principle wasn't used as much as
intended - and, where it is (usually with "system" dlls), they are
prone to "DLL hell" when upgrades stop one of the things that uses them
from working.
Thus, it would be nicer if prog.s, if they must use DLLs, kept their
own copies in their own directories... [...]
Right, but it seems that MS's developer kit(s) default to putting DLLs
into a System directory. Makes it easier for programmers, I guess. Hah!
With development of the "manifest" file, which you'll see in a program
directory, typically as a [program_name].exe.manifest, MS did give
programmers the ability to use an ActiveX dll from the local app install
path.
There's an ActiveX dll, and a "standard" DLL.
An "ActiveX" dll is "registered" in the registry, so apps that share it
can use the same DLL. When the application loads, it looks at the
registry for the location of that shared DLL.
A "regular" DLL is different. These are not registered, and when a
program requires one of these, it follows conventional rules, looking in
the apps current directory for the dll first, and if not found it
traverses the %path% to see if it can locate the DLL in the path.
*My* experience is that the issue called "DLL hell" is no where nearly as
serious as it was under Win9x....not that isn't ever a DLL issue, just
that's it's not commonplace any longer.
*My* Linux experience tells me this is not the case under Linux. While
the diehard Linux users still (IMO incorrectly) use "DLL Hell" as bit of
FUD against Windows, there is "dependency hell" under Linux. Same as "DLL
Hell", but still very much an issue. There have been times when I started
to install a package, and because it used a "shared library" that it was
going to install/update, the system wanted to uninstall 10 *other* apps
that used that same shared library that was about to be updated.