These two days a bit of a burn, we run a good program, to the test machine can not start (is not run, not run error), make me unusually depressed. After some groping, the discovery and WinXP, win2003 to solve DLL Hell and introduced the manifest mechanism is related. And we used to develop vs2003, it did not force the program to use manifest, but in vs2005, this has been changed to be required, and we did not follow the relevant configuration, so the program can not start. Based on the current experience, the VS2005 compiled program does not start for approximately two reasons, the following is a brief introduction to the solution.
1, in the development Group's machine (installs has the vs2005) sometimes cannot start
This is typically the result of the project's files being placed on the Fat/fat32 partition, either by moving them to an NTFS partition or by putting the project properties | Manifest tool| general| Use FAT32 Work-around "set to Yes.
2, the development team to operate normally, in exchange for other machines will not
This is typically caused by system DLLs (including CRT,MFC,ATL, etc.) that are not configured correctly. If the program is release version, then very simple, just put "\sdk\v2." 0\bootstrapper\packages\vcredist_x86 "under the" vcredist_x86. EXE "Copy to the target machine to run, this is the x86 platform for example, if you are using another CPU platform (AMD64 or IA64) to replace the x86 to the corresponding content.
If it's a debug version, it's a bit more complicated, and the first thing you need is to determine the version of the DLL you want, the vast majority (note: not "all") where it is the same as the compiler, and you can see it through the vs2005 dialog box, as shown in the following illustration:
After the release is finalized, enter the "%windir%\winsxs" folder on the development group's machine (described below as an example of the x86 platform version 8.0.50727.762 debug CRT), and copy the following files to the same location as the target machine:
All files under the x86_microsoft.vc80.debugcrt_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f folder
X86_microsoft.vc80.debugcrt_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f.cat and x86_ under the Manifests folder Microsoft.vc80.debugcrt_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f.manifest
The Policies\x86_policy.8.0.microsoft.vc80.debugcrt_1fc8b3b9a1e18e3b_x-ww_09e017b4 folder under the 8.0.50727.762.cat and 8.0.50727.762.policy
Note that the above operation is only required in the target operating system for winxp,win2003 and above, if the Win2000 and the following system, as long as the first folder under the copy of the file into the system32 of the line.
Report:
A few articles on the MSDN application Deployment for reference
Troubleshooting/C + + Isolated applications and Side-by-side assemblies:http://msdn2.microsoft.com/en-us/library/ Ms235342.aspx
Deployment examples:http://msdn2.microsoft.com/en-us/library/ms235285 (vs.80). aspx
The following are some of the system hints associated with this issue, and I'll list them here to make it easier for people who encounter these problems to find this article.
The referenced assembly is not installed on the system
The version of the component that the application requires conflicts with another active component.
The system cannot execute the specified program
Error_sxs_assembly_not_found
14003
0x800736b3
The referenced assembly is isn't installed on your system.