8
votes

I have a .net application that uses some vc++ compiled Win32 dlls. It works great on a 32 bit Win, but on 64 bit there is a problem: "Unable to load DLL 'xyz': The specified module could not be found. (Exception from HRESULT: 0x8007007E)"

Using dependency walker I found it misses the following dlls: MSVCP100.DLL, MSVCR100.DLL, GDIPLUS.DLL, GPSVC.DLL, IESHIMS.DLL

How can I install them to my 64 bit Win? Where should I put them? Should I register them? Or...?

Note, my project is compiled for x86 platform and it is ran from Program Files (x86) folder as a 32 bit app. My dlls are comiled as Win32 via Visual C++ in Visual Studio 2010.

Note, that it is mission impossible to get 64 version of my dlls because of some other reasons, so it would not be a solution.

Thanks!

2
IESHIMS has been missing on every project I have ever compiled. No idea why.meawoppl

2 Answers

10
votes

The whole process should be 32 or 64 bit. If you cannot compile all dependency libraries in 64 bit, you need to run .NET project in 32 bit. To do this, create x86 configuration (default is Any CPU) and build .NET project in this configuration.

You also need to install VC++ 2010 redistributable package on destination computer, with correct bitness, in your case - x86. This package can be downloaded from Microsoft WEB site.

If your program has installation package, VC++ redistributable should be added to it as single file or as merge modules.

2
votes

As ALex Farber noted, you have to install some runtime dlls on the target machine: