Tracking down DLL load errors in Windows ?

F

Fred P

Hi, a bit of platform-specific advice sought here... I'm trying to diagnose
one of those mysteries Windows is so fond of...

Say that I have code that imports some binary Python module from site-
packages (in this case, libpyexiv2.pyd through pyexiv2.py, could be anythng
else).

On three Windows boxes I've tried it (XP Pro or Home, Python 2.5)
everything works fine. On a fourth, importing the module fails with a
traceback like this :

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\python\lib\site-packages\pyexiv2.py", line 60, in <module>
import libpyexiv2
ImportError: DLL load failed: This application could not start
because its configuration is incorrect. Reinstalling it might solve
the problem.

I have tried long and hard to spot a meaningful difference between the
first three systems and the last, without success.

Is there any tool and/or methodology I could use to at least pinpoint the
exact DLL that libpyexiv2 is failing to load, and ideally also the reason
why ?...

TIA,
fp
 
M

Mark Tolonen

Fred P said:
Hi, a bit of platform-specific advice sought here... I'm trying to
diagnose
one of those mysteries Windows is so fond of...

Say that I have code that imports some binary Python module from site-
packages (in this case, libpyexiv2.pyd through pyexiv2.py, could be
anythng
else).

On three Windows boxes I've tried it (XP Pro or Home, Python 2.5)
everything works fine. On a fourth, importing the module fails with a
traceback like this :

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\python\lib\site-packages\pyexiv2.py", line 60, in <module>
import libpyexiv2
ImportError: DLL load failed: This application could not start
because its configuration is incorrect. Reinstalling it might solve
the problem.

I have tried long and hard to spot a meaningful difference between the
first three systems and the last, without success.

Is there any tool and/or methodology I could use to at least pinpoint the
exact DLL that libpyexiv2 is failing to load, and ideally also the reason
why ?...

That error message is returned from executables built with later versions of
Visual Studio (at least 2005 and 2008...not sure about 2003). The Windows
application event log will indicate what DLL is missing.

In addition to tools others have noted, depends.exe (comes with VS2005...was
removed in VS2008 for unknown reasons) will list the DLLs required by an
executable. Another Visual Studio tool, "dumpbin /imports <target>" works,
too.

-Mark
 
F

Fred Pacquier

Mark Tolonen said:
That error message is returned from executables built with later
versions of Visual Studio (at least 2005 and 2008...not sure about
2003). The Windows application event log will indicate what DLL is
missing.

In addition to tools others have noted, depends.exe (comes with
VS2005...was removed in VS2008 for unknown reasons) will list the DLLs
required by an executable. Another Visual Studio tool, "dumpbin
/imports <target>" works, too.

Silly me, I hadn't even thought of the Windows event log either... thanks
much !
fp
 
F

Fred Pacquier

Fred P said:
Hi, a bit of platform-specific advice sought here... I'm trying to
diagnose one of those mysteries Windows is so fond of...
Say that I have code that imports some binary Python module from site-
packages (in this case, libpyexiv2.pyd through pyexiv2.py, could be
anythng else).
On three Windows boxes I've tried it (XP Pro or Home, Python 2.5)
everything works fine. On a fourth, importing the module fails with a
traceback like this :
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\python\lib\site-packages\pyexiv2.py", line 60, in <module>
import libpyexiv2
ImportError: DLL load failed: This application could not start
because its configuration is incorrect. Reinstalling it might solve
the problem.
I have tried long and hard to spot a meaningful difference between the
first three systems and the last, without success.
Is there any tool and/or methodology I could use to at least pinpoint
the exact DLL that libpyexiv2 is failing to load, and ideally also the
reason why ?...

Thanks to Mark and Christian : dependency-walker confirmed the VC++
issue.

After installing the MS redistributable DLL package -- actually I had to
install *three* before hitting the right one (2005SP1) -- libpyexiv2
finally loads all its dependencies.

Of course I've still no idea why/how it ran on the first three systems
(and most others, from the look of it) without doing anything, and not on
this one... but at least now it works :)
 
M

Mark Tolonen

Fred Pacquier said:
After installing the MS redistributable DLL package -- actually I had to
install *three* before hitting the right one (2005SP1) -- libpyexiv2
finally loads all its dependencies.

Of course I've still no idea why/how it ran on the first three systems
(and most others, from the look of it) without doing anything, and not on
this one... but at least now it works :)

Yes, welcome to Microsoft's solution to DLL Hell...Side-by-Side DLL Hell.

-Mark
 
F

Fred Pacquier

Mark Tolonen said:
Yes, welcome to Microsoft's solution to DLL Hell...Side-by-Side DLL
Hell.

As always, it boils down to a philosophical choice : is it better to suffer
through Hell alone, or in bad company ? :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,969
Messages
2,570,161
Members
46,708
Latest member
SherleneF1

Latest Threads

Top