X
xkp
From internet i red the following about dll hell.
Shared in-memory code pages
Even if the system DLL is okay, or an application has a working local
copy, if a previous application has started with an incompatible
version, the new application won't work. This can manifest itself
either as "an application doesn't work if a different application is
running", or more mysteriously as "an application doesn't work if a
different application has been run (but needn't be running any
longer)": if app a loads a corrupt or incompatible library, then app b
is launched and uses that library, that version will stay in memory
even after app a exits (so long as app b is still running), so app b
might fail to work because of app a, even though app a is no longer
running. More subtly yet, a third application app c may fail to run
(so long as app b is still running) even if it is started after app a
has exited.
In my case i have two different exe named OLD and NEW, both using a
dll named DLL.
the software OLD, which is older, uses older version of dll DLL, which
is in the same directory of OLD
OLDprogramfolder
OLD.exe
DLL.dll (older)
the software NEW, newer, uses a different version of dll DLL, which is
in the same directory of NEW
NEWprogramfolder
NEW.exe
DLL.dll (newer)
According to theory if i run the OLD program first, it will load
DLL.dll and will work fine, but if i then run NEW without closing OLD,
it will try to use DLL.dd from OLD folder, not loading the new version
of DLL.dll.
Well this is not what actually happens.
If i run "process explorer" i can see that each of the two program,
OLD and NEW, uses its own dll from its folder.
Why this happen?
I need to understand it in order to be sure that it is not just by
chance that both software are working on my machine and they could not
work on others.
Any advice?
Thanks in advance
Shared in-memory code pages
Even if the system DLL is okay, or an application has a working local
copy, if a previous application has started with an incompatible
version, the new application won't work. This can manifest itself
either as "an application doesn't work if a different application is
running", or more mysteriously as "an application doesn't work if a
different application has been run (but needn't be running any
longer)": if app a loads a corrupt or incompatible library, then app b
is launched and uses that library, that version will stay in memory
even after app a exits (so long as app b is still running), so app b
might fail to work because of app a, even though app a is no longer
running. More subtly yet, a third application app c may fail to run
(so long as app b is still running) even if it is started after app a
has exited.
In my case i have two different exe named OLD and NEW, both using a
dll named DLL.
the software OLD, which is older, uses older version of dll DLL, which
is in the same directory of OLD
OLDprogramfolder
OLD.exe
DLL.dll (older)
the software NEW, newer, uses a different version of dll DLL, which is
in the same directory of NEW
NEWprogramfolder
NEW.exe
DLL.dll (newer)
According to theory if i run the OLD program first, it will load
DLL.dll and will work fine, but if i then run NEW without closing OLD,
it will try to use DLL.dd from OLD folder, not loading the new version
of DLL.dll.
Well this is not what actually happens.
If i run "process explorer" i can see that each of the two program,
OLD and NEW, uses its own dll from its folder.
Why this happen?
I need to understand it in order to be sure that it is not just by
chance that both software are working on my machine and they could not
work on others.
Any advice?
Thanks in advance