Missing dlls on 64 bit Win

2019-02-13 13:27发布

问题:

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!

回答1:

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:

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

  • The .NET runtime with the right version, here the 4.0,
  • Visual Studio redistributable package (I'm not sure of this one, it should be for C++ applications only but may be worth a try if .NET is not enough)


标签: .net c++ dll