2
votes

I have an old visual studio project (cuSVM project) that previously is used in 32-bit WinXP using visual studio 2005 SP1. I want to run it in my 64-bit Win7. I compiled it in 64-bit mode, using visual studio 2008. but it can not run because of some missing dlls.

I used "Dependency Walker", missing dll s was :

  • MSVCR80.DLL
  • MSVCR90D.DLL
  • IESHIMS.DLL

with the yellow question marks that says: "The system cannot find the file specified".

in DLL-tree I have a red "NVCUDA.DLL" in "c:\windows\system32\NVCUDA.DLL" and a red block "IEFRAME.DLL", "c:\windows\system32\IEFRAME.DLL" in this file sub-tree.

and error messages:

Error: At least one required implicit or forwarded dependency was not found.
Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

Next I copied the "MSVCR80.DLL" and "MSVCR90D.DLL" files from Visual Studio installations :

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\amd64\Microsoft.VC90.DebugCRT

and C:\Program Files (x86)\Microsoft Visual Studio 8\VC\redist\amd64\Microsoft.VC80.CRT

The file version of "MSVCR80.DLL" is "8.0.50727.42" and file version of "MSVCR90D.DLL" is "9.0.21022.8".

The embed.manifest file information is: type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"

I have a little knowledge about visual studio and dll files, so I really need your help.

2
You're already mixing release and debug DLLs from different versions of Visual Studio. Make sure that everything is built in either release or debug using the same version of VS. This includes the dependencies.Bart
Do you mean that I must compile the project using visual studio 2005? If I use visual studio 2008, I need "MSVCR80.DLL" that only exist in visual studio 2005 installation folder. Why the program needs MSVCR80.DLL while it compiled in visual studio 2008?Lily
I searched my computer for "IESHIMS.DLL", there are different versions with different size. I used the versions that located in "C:\Program Files\Internet Explorer" , is it true?Lily
Most likely something your project relies on (do you link against something?) was built using Visual Studio 2005. This creates a dependency to VS 2005 related DLLs. Make sure that everything you use (including dependencies) is built with the same VS version. Don't worry about IESHIMS.DLL for now. Dependency Walker sometimes gives you false negatives.Bart
Having a quick look at the project, there seems to be a dependency on Matlab libraries? What version of Visual Studio are they compiled for? You will most likely find this in the documentation of Matlab...Bart

2 Answers

2
votes

I found that the error may not be related to missing dll s. The MATLAB error is "invalid mex file" .When the error message is : 'The specified "module" could not be found' then missing dlls are the cause. But when the error message is : 'The specified "procedure" could not be found', the problem may be different

2
votes

I had this same problem. Solving the problem was a strange, hard to see issue.

Go to Project > Properties. Select Configuration Properties > Linker > Advanced as shown in the picture below. Then where it says "Target Machine" change the setting from 'Not set' to MachineX64 (/Machine:X64) as shown in the picture again. It took me a while to figure this out and I have successfully been compiling mex+cuda files from visual studio from scratch since. Hopefully this fixes the issue for you as well.

image