#512 closed defect (fixed)
Unable to run debug exe compiled with VC2008, Solution Attached
Reported by: | Aaron Shumate | Owned by: | |
---|---|---|---|
Priority: | Should Have | Milestone: | Pre-Alpha 3 |
Component: | Core engine | Keywords: | manifest |
Cc: | Patch: |
Description
I've got an updated repository and workspace. I've successfully build both the release and debug executables in a fully patched VC2008 (9.0.21022.8 RTM) under Windows 7. I am able to run the release executable, but unable to run the debug executable -- either from within VC++ or outside.
Solution: Since there is no VC90 version DebugCRT.manifest, the program picks up the VC80 version which has the wrong assemblyIdentity/version (recently and correctly changed in ticket #510). The fix is easy, just add a Microsoft.VC90.DebugCRT.manifest to the binaries\system directory. I've attached the file which is based on the existing non-debug version, Microsoft.VC90.CRT.manifest.
Attachments (1)
Change History (7)
by , 14 years ago
Attachment: | Microsoft.VC90.DebugCRT.manifest added |
---|
comment:1 by , 14 years ago
Thanks for letting us know about the problem and posting the manifest! However, doesn't this very file already exist? http://trac.wildfiregames.com/browser/ps/trunk/binaries/system/Microsoft.VC90.DebugCRT.manifest Is the filename incorrect? IIRC, it at least used to work with VC2008 on another (pre-Windows 7) system.
comment:2 by , 14 years ago
Hmm... That .manifest file is in the SVN repository but it's disabled in the public HTTP view since the CRT licence doesn't allow distribution of the debug files. Most of the debug DLLs are disabled too (for the same reason and also to save a bit of download time).
But Microsoft.VC80.DebugCRT.manifest and some debug DLLs (msvc{rt,r71,r80,p80}d.dll) are included in the public view, which is probably technically illegal but they were needed for the game to run. The idea was VC2008 users should have all the VC90 files already, and the older ones were needed for our library binaries (which were all compiled with <= VC2005).
I guess I should just include some others since it seems they're needed now. In that case, which files are needed? There's Microsoft.VC90.DebugCRT.manifest, Microsoft.VC90.DebugOpenMP.manifest, msvcm80d.dll, msvcp71d.dll, msvcp90d.dll, msvcr90d.dll, vcomp90d.dll. Is just the DebugCRT manifest sufficient?
comment:3 by , 14 years ago
Ah, I'd forgotten about that. About which files are needed: I've just successfully tested the game on a system with VS2005 installed without *.manifest and msvc*.dll. Surprisingly, queries of our app-local manifest don't even appear in filemon, it just uses the ones in C:\Windows\WinSxS.
We definitely don't need msvcm* ("merge module", whatever that is). I'm not sure about vcomp90, I think it might have been required by a dependency, but can't see which one.
Given the original problem report (using the wrong CRT version if the manifest isn't found) and the fact that the IDE's SxS version can be used, I figure it'd be enough to include the manifest for starters.
comment:4 by , 14 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Okay, I've added just Microsoft.VC90.DebugCRT.manifest for now. Based on the original report I'll assume this fixes the problem - please complain if it doesn't.
(I'll also assume Microsoft won't sue us for distributing these files.)
comment:6 by , 12 years ago
Milestone: | → Pre-Alpha 3 |
---|
New Debug CRT.manifest for VS2008. Created based on existing, non-debug version.