Wireshark-dev: Re: [Wireshark-dev] Problem loading custom DLL with standard Wireshark distribut
From: "Chris Delaney" <csdelane@xxxxxxxxxxx>
Date: Tue, 13 Feb 2007 15:12:41 -0600
From: Ulf Lamping <ulf.lamping@xxxxxx>
Reply-To: Developer support list for Wireshark <wireshark-dev@xxxxxxxxxxxxx>
To: Developer support list for Wireshark <wireshark-dev@xxxxxxxxxxxxx>
Subject: Re: [Wireshark-dev] Problem loading custom DLL with standard Wireshark distribution
Date: Tue, 13 Feb 2007 21:05:04 +0100

Chris Delaney wrote:
> Hello,
>
> I am having a problem loading my custom dissector plugin .dll with the
> standard distribution of Wireshark 0.99.5. I checked out the source tree
> (0.99.5) via Subversion and was able to successfully build the Wireshark
> executables along with my plugin .dll.  When running the version that I
> built, my plugin loads fine and the dissector operates as expected.
> However, if I download the standard (binary) version of Wireshark 0.99.5,
> after installing and copying my plugin .dll to the .../plugins/0.99.5
> directory I get the infamous:
>
> Couldn't load module <path>\xxx.dll: The specified module could not be found
>
> I'm guessing that I am not providing the correct build options for the .dll, > but cannot seem to find which one. I also tried to copy a .dll of one of > the standard plugins (ciscosm) that I built to the plugins directory of the > standard distribution and that failed as well. So it does not seem to be my
> particular plugin, but rather my build environment.  Specifically:
>
> Microsoft Visual C++ 2005 Express Edition (version 2.0.50727)
> Microsoft Platform SDK for Windows Server 2003 R2
> Windows XP Professional SP 2
> Wireshark 0.99.5
>
>
Two things comes to mind:

- copy the xxx.dll.manifest file along with the dll (this is new with
Visual C++ version 8)
- install vcredist_x86.exe (if the machine running WS isn't the machine
where studio is installed)


Regards, ULFL

Thank you for the response. I tried both of your suggestions, but the problem remains. The xxx.dll.manifest file was generated during the build, but copying it to the .../plugins/0.99.5 directory did not allow the plugin to be loaded. Also, the machine I am trying to run the WS distribution is the same as where VC is installed, but I installed vcredist_x86.exe anyway and again, the plugin failed to load.

One thing I did notice was that the .dll's included with the general distribution require these .dll's:

libwireshark.dll
MSVCRT.dll
KERNEL32.dll

The .dll's that I create with MSVC05EE require these .dll's:

libwireshark.dll
MSVCR80.dll
KERNEL32.dll

I have the C runtime library MSVCRT.dll in my system32 directory, but I do not have MSVCR80.dll anywhere within my library path, despite having installed vcredist_x86.exe, and MSVC05EE. After I copied MSVCR80.dll into my system32 directory, the error message changed:

From:
Couldn't load module <path>\xxx.dll: The specified module could not be found.

To:
Couldn't load module <path>\xxx.dll: The specified procedure could not be found.

So it seems that the MS C Runtime Library is at fault here, but I still can't seem to nail down the issue. Is there a dependency that .dll's compiled with MSVC05EE are not compatible with a .exe compiled with MSVC06?

Thanks again,

Chris

_________________________________________________________________
From predictions to trailers, check out the MSN Entertainment Guide to the
Academy Awards® http://movies.msn.com/movies/oscars2007/?icid=ncoscartagline1