I may not be at the right forum but I'm posting here because it's
highly active.
I found many discussions on this specific topic but NO definitive
solution.
Hope someone can help.
Here is my problem of the day:
The output mtrx2col.exe (a very simple, small C++ script) can only
work in the directory where I instructed the compiler to put it. If I
just copy the .exe in another directory it does not work.
When I launch it (as command line), a pop-up window reports this
error:
"This application has failed to start because MSVCP90D.dll was not
found"
Note that the mtrx2col.exe is not library dependent, i.e. it does not
point to any library at all.
Hence the question: are the .exe files transportable? What is that pop-
up error about?
I do not use the MS Visual C++. I use the compiler directly as command
line, which is:
cl .\mtrx2col.cpp /Od /Gm /EHsc /RTC1 /MDd /Fe.\Debug\ /W3 /ZI /TP
The compiler version is:
Microsoft 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for
80x86
The .manifest file seems correctly pointing to the MSVCP90D.dll which
is in this directory:
C:\WINDOWS\WinSxS
\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375
The .manifest file:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1'
manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC90.DebugCRT'
version='9.0.21022.8'
processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
</assembly>
1. /MDd means you are linking to the *debug* version of the DLL version of the
CRT. This is what is causing the request for MSVCP90D.dll. You are not allowed
have Visual Studio installed. If you want the DLL version of the CRT you should
use /MD.
2. Even then, if the release DLL MSVCP90.dll is not installed on the target
machine, your program will not run. You can distribute this file, but you may
find it much easier to use static linking (/MT). The CRT libraray is then built
into your executable.