Opened 13 years ago

Closed 13 years ago

Last modified 11 years ago

#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)

Microsoft.VC90.DebugCRT.manifest (532 bytes ) - added by Aaron Shumate 13 years ago.
New Debug CRT.manifest for VS2008. Created based on existing, non-debug version.

Download all attachments as: .zip

Change History (7)

by Aaron Shumate, 13 years ago

New Debug CRT.manifest for VS2008. Created based on existing, non-debug version.

comment:1 by Jan Wassenberg, 13 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 Philip Taylor, 13 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 Jan Wassenberg, 13 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 Philip Taylor, 13 years ago

Resolution: fixed
Status: newclosed

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:5 by (none), 12 years ago

Milestone: Unclassified

Milestone Unclassified deleted

comment:6 by historic_bruno, 11 years ago

Milestone: Pre-Alpha 3
Note: See TracTickets for help on using tickets.