Wireshark-dev: [Wireshark-dev] News from the msvcr dll hell ... and a possible solution!
From: Ulf Lamping <ulf.lamping@xxxxxx>
Date: Sun, 15 Feb 2009 12:43:43 +0100
Hi!

On a computer without any Visual Studio version installed I tested my private Wireshark build compiled with Visual Studio 2005 Express Edition and with it's own installer. As usual, this installer will call the vcredist_x86.exe, so it installs the msvcr80.dll for the 2005 studio.

However, I was facing the problem of Wireshark not loading (probably because of missing dlls).


So I digged deeper into that problem, looking for a program to display the required dlls. I've found:

http://www.dependencywalker.com/

that displays the dlls, so I looked at the problematic computer.

I found out that the problematic dependency chain was:

libwireshark.dll
  lua5.1.dll
    msvcr90.dll

Strangely, the dependency walker was finding a msvcr90.dll in "program files\image magick". I don't know if Windows will really use this totally unrelated dll or if this is a bug in dependency walker. Maybe that's the reason, that we get different error messages on different omputers - because different additional programs are installed?!?

Anyway, the msvcr90.dll in image magick was the older version (without SP1) of the two possible, but lua seems to need the newer one[1].


After installing vcredist_x86.exe for MSVC2008 SP1 [2], Wireshark started without a problem.


First of all, I'm glad that I've found the cause of the problem :-)


So a solution for MSVC 2005 (EE) devels like me:

1) Install SP1 for your Visual Studio - a good idea anyway

2) Add vcredist_x86.exe / or the corresponding msvcr files for 2008 SP1 to the installer, even if developing under 2005


I guess it's a good idea to integrate 2) into the setup / build process ...

Regards, ULFL

[1] http://www.wireshark.org/docs/wsdg_html_chunked/ChToolsMSChain.html#id4715151
[2]
http://www.microsoft.com/downloads/details.aspx?FamilyID=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=en