0
votes

There is the build rule (below) which was used to compile x64 assembly with Visual Studio 2005. It works well but the issue is appearing on Windows8 machine. And compiler fires the next error:

1>Assembling x64...
1>Project : error PRJ0003 : Error spawning 'cmd.exe'.

while 32bin assembly builds successfully. Any ideas how to fix it?

The rule is located in "C:\Program Files (x86)\Microsoft Visual Studio 8\VC\VCProjectDefaults" directory and ml64.exe in "C:\Program Files (x86)\Microsoft Visual Studio 8\VC\bin\amd64" and "C:\Program Files (x86)\Microsoft Visual Studio 8\VC\bin\x86_amd64".

< ?xml version="1.0" encoding="utf-8"?>
< VisualStudioToolFile Name="Microsoft Macro Assembler x64" Version="8.00">

        <Properties>
            <BooleanProperty
                Name="NoLogo"
                DisplayName="Suppress Startup Banner"
                Description="Suppress the display of the startup banner and information messages.     (/nologo)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/nologo"
                DefaultValue="true"
            />
            <BooleanProperty
                Name="TinyMemoryModelSupport"
                DisplayName="Tiny Memory Model Support"
                PropertyPageName="Advanced"
                Description="Enables tiny-memory-model support. Note that this is not equivalent to the .MODEL TINY directive.     (/AT)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/AT"
            />
            <StringProperty
                Name="ObjectFileName"
                DisplayName="Object File Name"
                PropertyPageName="Object File"
                Description="Specifies the name of the output object file.     (/Fo:[file])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Fo&quot;[value]&quot;"
                DefaultValue="$(IntDir)\$(InputName).obj"
            />
            <EnumProperty
                Name="PreserveIdentifierCase"
                DisplayName="Preserve Identifier Case"
                Description="Specifies preservation of case of user identifiers.     (/Cp, /Cu, /Cx)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                DefaultValue="0"

                <Values>
                    <EnumValue
                        Value="0"
                        DisplayName="Default"
                    />
                    <EnumValue
                        Value="1"
                        Switch="/Cp"
                        DisplayName="Preserves Identifier Case (/Cp)"
                    />
                    <EnumValue
                        Value="2"
                        Switch="/Cu"
                        DisplayName="Maps all identifiers to upper case. (/Cu)"
                    />
                    <EnumValue
                        Value="3"
                        Switch="/Cx"
                        DisplayName="Preserves case in public and extern symbols. (/Cx)"
                    />
                </Values>
            </EnumProperty>
            <StringProperty
                Name="PreprocessorDefinitions"
                DisplayName="Preprocessor Definitions"
                Description="Defines a text macro with the given name.     (/D[symbol])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/D&quot;[value]&quot;"
                Delimited="true"
                Inheritable="true"
            />
            <BooleanProperty
                Name="GeneratePreprocessedSourceListing"
                DisplayName="Generate Preprocessed Source Listing"
                PropertyPageName="Listing File"
                Description="Generates a preprocessed source listing to the Output Window.     (/EP)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/EP"
            />
            <StringProperty
                Name="AssembledCodeListingFile"
                DisplayName="Assembled Code Listing File"
                PropertyPageName="Listing File"
                Description="Generates an assembled code listing file.     (/Fl[file])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Fl&quot;[value]&quot;"
            />
            <StringProperty
                Name="SourceListingLineWidth"
                DisplayName="Source Listing Line Width"
                PropertyPageName="Listing File"
                Description="Sets the line width of source listing in characters per line. Range is 60 to 255. Same as PAGE width.     (/Sl [width])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Sl [value]"
            />
            <StringProperty
                Name="SourceListingPageLength"
                DisplayName="Source Listing Page Length"
                PropertyPageName="Listing File"
                Description="Sets the page length of source listing in lines per page. Range is 10 to 255. Same as PAGE length.     (/Sp [length])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Sp [value]"
            />
            <StringProperty
                Name="IncludePaths"
                DisplayName="Include Paths"
                Description="Sets path for include file. A maximum of 10 /I options is allowed.     (/I [path])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/I &quot;[value]&quot;"
                Delimited="true"
                Inheritable="true"
            />
            <BooleanProperty
                Name="ListAllAvailableInformation"
                DisplayName="List All Available Information"
                PropertyPageName="Listing File"
                Description="Turns on listing of all available information.     (/Sa)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Sa"
            />
            <BooleanProperty
                Name="UseSafeExceptionHandlers"
                DisplayName="Use Safe Exception Handlers"
                PropertyPageName="Advanced"
                Description="Marks the object as either containing no exception handlers or containing exception handlers that are all declared with .SAFESEH.     (/safeseh)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/safeseh"
            />
            <BooleanProperty
                Name="AddFirstPassListing"
                DisplayName="Add First Pass Listing"
                PropertyPageName="Listing File"
                Description="Adds first-pass listing to listing file.     (/Sf)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Sf"
            />
            <BooleanProperty
                Name="EnableAssemblyGeneratedCodeListing"
                DisplayName="Enable Assembly Generated Code Listing"
                PropertyPageName="Listing File"
                Description="Turns on listing of assembly-generated code.     (/Sg)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Sg"
            />
            <BooleanProperty
                Name="DisableSymbolTable"
                DisplayName="Disable Symbol Table"
                PropertyPageName="Listing File"
                Description="Turns off symbol table when producing a listing.     (/Sn)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Sn"
            />
            <StringProperty
                Name="SourceListingSubTitle"
                DisplayName="Source Listing Subtitle"
                PropertyPageName="Listing File"
                Description="Specifies subtitle text for source listing. Same as SUBTITLE text.     (/Ss [subtitle])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Ss [value]"
            />
            <StringProperty
                Name="SourceListingTitle"
                DisplayName="Source Listing Title"
                PropertyPageName="Listing File"
                Description="Specifies title for source listing. Same as TITLE text.     (/St [title])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/St [value]"
            />
            <BooleanProperty
                Name="EnableFalseConditionalsInListing"
                DisplayName="Enable False Conditionals In Listing"
                PropertyPageName="Listing File"
                Description="Turns on false conditionals in listing.     (/Sx)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Sx"
            />
            <EnumProperty
                Name="WarningLevel"
                DisplayName="Warning Level"
                Description="Sets the warning level, where level = 0, 1, 2, or 3.    (/W0, /W1, /W2, /W3)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                DefaultValue="3"

                <Values>
                    <EnumValue
                        Value="0"
                        Switch="/W0"
                        DisplayName="Warning Level 0 (/W0)"
                    />
                    <EnumValue
                        Value="1"
                        Switch="/W1"
                        DisplayName="Warning Level 1 (/W1)"
                    />
                    <EnumValue
                        Value="2"
                        Switch="/W2"
                        DisplayName="Warning Level 2 (/W2)"
                    />
                    <EnumValue
                        Value="3"
                        Switch="/W3"
                        DisplayName="Warning Level 3 (/W3)"
                    />
                </Values>
            </EnumProperty>
            <BooleanProperty
                Name="TreatWarningsAsErrors"
                DisplayName="Treat Warnings As Errors"
                Description="Returns an error code if warnings are generated.     (/WX)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/WX"
            />
            <BooleanProperty
                Name="MakeAllSymbolsPublic"
                DisplayName="Make All Symbols Public"
                PropertyPageName="Object File"
                Description="Makes all symbols public.     (/Zf)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Zf"
            />
            <BooleanProperty
                Name="GenerateDebugInformation"
                DisplayName="Generate Debug Information"
                Description="Generates Debug Information.     (/Zi)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Zi"
                DefaultValue="true"
            />
            <BooleanProperty
                Name="EnableMASM51Compatibility"
                DisplayName="Enable MASM 5.1 Compatibility"
                Description="Enables M510 option for maximum compatibility with MASM 5.1.     (/Zm)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Zm"
            />
            <EnumProperty
                Name="PackAlignmentBoundary"
                DisplayName="Pack Alignment Boundary"
                PropertyPageName="Advanced"
                Description="Packs structures on the specified byte boundary. The alignment can be 1, 2, 4, 8 or 16.     (/Zp1, /Zp2, /Zp4, /Zp8, /Zp16)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"

                <Values>
                    <EnumValue
                        Value="0"
                        DisplayName="Default"
                    />
                    <EnumValue
                        Value="1"
                        Switch="/Zp1"
                        DisplayName="One Byte Boundary (/Zp1)"
                    />
                    <EnumValue
                        Value="2"
                        Switch="/Zp2"
                        DisplayName="Two Byte Boundary (/Zp2)"
                    />
                    <EnumValue
                        Value="3"
                        Switch="/Zp4"
                        DisplayName="Four Byte Boundary (/Zp4)"
                    />
                    <EnumValue
                        Value="4"
                        Switch="/Zp8"
                        DisplayName="Eight Byte Boundary (/Zp8)"
                    />
                    <EnumValue
                        Value="5"
                        Switch="/Zp16"
                        DisplayName="Sixteen Byte Boundary (/Zp16)"
                    />
                </Values>
            </EnumProperty>
            <BooleanProperty
                Name="PerformSyntaxCheckOnly"
                DisplayName="Perform Syntax Check Only"
                Description="Performs a syntax check only.     (/Zs)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Zs"
            />
            <EnumProperty
                Name="CallingConvention"
                DisplayName="Calling Convention"
                PropertyPageName="Advanced"
                Description="Selects calling convention for your application.     (/Gc, /Gd. /Gz)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"

                <Values>
                    <EnumValue
                        Value="0"
                        DisplayName="Default"
                    />
                    <EnumValue
                        Value="1"
                        Switch="/Gd"
                        DisplayName="Use C-style Calling Convention (/Gd)"
                    />
                    <EnumValue
                        Value="2"
                        Switch="/Gz"
                        DisplayName="Use stdcall Calling Convention (/Gz)"
                    />
                    <EnumValue
                        Value="3"
                        Switch="/Gc"
                        DisplayName="Use Pascal Calling Convention (/Gc)"
                    />
                </Values>
            </EnumProperty>
            <EnumProperty
                Name="ErrorReporting"
                DisplayName="Error Reporting"
                PropertyPageName="Advanced"
                Description="Reports internal assembler errors to Microsoft.     (/errorReport:[method])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"

                <Values>
                    <EnumValue
                        Value="0"
                        Switch="/errorReport:prompt"
                        DisplayName="Prompt to send report immediately (/errorReport:prompt)"
                    />
                    <EnumValue
                        Value="1"
                        Switch="/errorReport:queue"
                        DisplayName="Prompt to send report at the next logon (/errorReport:queue)"
                    />
                    <EnumValue
                        Value="2"
                        Switch="/errorReport:send"
                        DisplayName="Automatically send report (/errorReport:send)"
                    />
                    <EnumValue
                        Value="3"
                        Switch="/errorReport:none"
                        DisplayName="Do not send report (/errorReport:none)"
                    />
                </Values>
            </EnumProperty>
            <StringProperty
                Name="BrowseFile"
                DisplayName="Generate Browse Information File"
                PropertyPageName="Advanced"
                Description="Specifies whether to generate browse information file and its optional name or location of the browse information file.     (/FR[name])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/FR&quot;[value]&quot;"
                Delimited="true"
                Inheritable="true"
            />
        </Properties>
    </CustomBuildRule>
</Rules>

1

1 Answers

2
votes

Error spawning 'cmd.exe'.

Your machine is pretty messed up, Visual Studio cannot start the command processor. First you need to check if cmd.exe is still located in the c:\windows\system32 directory. Next you need to check if your environment variables are still correct. Which is the more typical mishap, uninstallers tend to screw this up.

Start + Control Panel, System, Advanced, Environment Variables button. Look at the System variables displayed there. The ComSpec variable needs to point to c:\windows\system32\cmd.exe. The Path environment variable needs to start with c:\windows\system32;c:\windows. I'm using the default names for these directories, small chance that they are different on your machine. Log out and log back in to make changes effective.