2012-01-24 15 views
5

Sto lavorando su un sistema operativo Windows XP a 64 bit Windows 2008 con addon a 64 bit.Errore di configurazione side-by-side per build di debug a 64 bit in VS2008

Ho completato con successo i miei progetti in 32 & 64 bit, debug e rilascio config. Il debug a 64 bit non si avvia; dà l'errore:

Unable to Start program xxx This application has failed to start because application configuration is incorrect. Review the manifest file for possible errors. Reinstalling the application may fix this problem. For more retails see application event log.

Ho eseguito il Dipendente Walker. Dal sentiero redistibutable C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC \ redist \ Debug_NonRedist amd64 \ Microsoft.VC90.DebugCRT \ ho aggiunto Microsoft.VC90.DebugCRT.manifest msvcm90d msvcp90d msvcr90d Microsoft.VC90.DebugOpenMP vcomp90d.sll nella cartella bin \ debug della mia soluzione.

le dipendenze Infine Walker non ha ancora presenti delle macchie di colore giallo (file missing) a sinistra, ma ancora ha dato errori come:

Error: At least one required implicit or forwarded dependency was not found. Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module. Error: Modules with different CPU types were found. Error: The Side-by-Side configuration information in "e:\xyz.EXE" contains errors. The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail (14001).

Il manifesto a 32 bit dice:

<?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"></requestedExecutionLevel> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" **processorArchitecture="x86"** publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> 
    </dependentAssembly> 
    </dependency> 
</assembly> 

considerando che il debug di 64 bit manifest ha:

Quello che non riesco a capire è, perché fa il debug 32-bit build ru n con successo?

Please help me come ho già controllato molte domande ma non ho trovato alcuna soluzione fattibile.

+0

Non un duplicato, ma possibilmente correlato? Non sono sicuro se questo ti sarà di aiuto: http://stackoverflow.com/questions/3803825/vc-crt-redist-problem –

+0

Stai tentando di eseguire la compilazione su una macchina diversa da quella in cui la hai costruita? Di solito il runtime di debug è "non ridistribuibile", il che significa che non è possibile eseguirlo su altre macchine senza creare moduli di unione e installarli su qualsiasi macchina su cui si sta tentando di eseguire il codice. – Benj

+0

@Nic - Non penso che quella domanda possa aiutare, a quella persona mancava semplicemente il runtime di rilascio corretto. Il runtime di debug è un problema ... In genere, la creazione di un "progetto di installazione" in VS gestisce i moduli di unione per te in modo che tu possa installarli insieme ai tuoi binari con una build di debug. – Benj

risposta

5

Grazie per aver risposto alla mia domanda. L'ho finalmente risolto ed ecco la soluzione: -

La mia era una soluzione VC++ basata su Qt, l'app dipendeva da alcune librerie di terze parti &. Il mio compito era di fornire supporto a 64 bit alla mia applicazione per la quale avevo costruito Qt e dll di terze parti & librerie in sistemi operativi a 64 bit.

Ho ricevuto l'errore CRT quando ho provato a eseguire la mia app in debug 64 bit di configurazione.L'errore persisteva anche dopo aver copiato i seguenti CRT nella cartella bin della mia applicazione

redist\Debug_NonRedist\amd64\Microsoft.VC90.DebugCRT:

  1. Microsoft.VC90.DebugCRT.manifest
  2. msvcm90d.dll
  3. msvcp90d.dll
  4. msvcr90d.dll

Microsoft.VC90.DebugOpenMP:

  1. vcomp90d.dll

sono stato in grado di lanciare la mia applicazione con successo in modalità debug a 64 bit quando ho incollato le CRT di cui sopra nelle corrispondenti cartelle bin dove erano presenti Qt e le librerie 3rd party.

+0

Suggerimento: dovresti essere in grado di accettare la tua risposta. –

1

Le dipendenze non sono eccezionali con le dipendenze affiancate perché spesso possono far sembrare che la dll venga trovata quando in realtà era richiesta una versione leggermente diversa.

È possibile utilizzare Sxstrace.exe per avere una migliore idea di ciò che manca:

http://blogs.msdn.com/b/junfeng/archive/2006/04/14/576314.aspx

Il registro eventi di solito mostra gli errori di side-by-side, ma purtroppo questi non ti danno molte informazioni altro di quello hai un problema

2

Ho avuto lo stesso problema dopo aver aggiunto un manifest per "Elevazione privilegi" alla mia applicazione console Delphi (32 bit, problema quando veniva eseguito su Win7 x64). Il problema era legato a una dipendenza menzionato nel file manifesto:

<dependency> 
<dependentAssembly> 
    <assemblyIdentity 
    type="win32" 
    name="Microsoft.Windows.Common-Controls" 
    version="6.0.0.0" 
    publicKeyToken="6595b64144ccf1df" 
    language="*" 
    processorArchitecture="*"/> 
</dependentAssembly> 
</dependency> 

Quando ho rimosso dal manifesto, il Side by Side errore è scomparso.

+0

Benvenuto e grazie per la risposta alternativa, MrTheV. –

+0

Come lo hai rimosso dal manifest? – user3731622