"Anwendungskonfiguration falsch ist" und "side-by-side-Konfiguration ungültig ist" running VS2008 64-bit-debug-build
Ich arbeite auf einem 64-bit OS windows 7 ultimate Maschine VS2008 mit 64bit addon.
Habe ich erfolgreich Baue meine Projekte in 32 & 64-bit -, debug-und release-Konfiguration.
Die 64-bit-debug nicht starten; es gibt die Fehlermeldung:
Programm kann nicht Gestartet xxx
Diese Anwendung konnte nicht gestartet werden, weil Anwendungskonfiguration nicht ordnungsgemäß ist. Überprüfen Sie die manifest-Datei auf mögliche Fehler. Neuinstallation der Anwendung könnte das problem beheben. Für mehr Einzelhandel finden Sie unter Ereignisprotokoll Anwendung.
Lief ich den dependency walker.
Aus der redistibutable Weg C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\amd64\Microsoft.VC90.DebugCRT
Ich Hinzugefügt
Microsoft.VC90.DebugCRT.manifest
msvcm90d
msvcp90d
msvcr90d
Microsoft.VC90.DebugOpenMP
vcomp90d.sll
im bin\debug-Ordner von meiner Lösung.
Schließlich dependency walker hatte ja keine gelben Markierungen (fehlende Dateien) Links, aber es gab Fehler wie:
Fehler: mindestens eine erforderlich, implizite oder weitergeleitet Abhängigkeit wurde nicht gefunden.
Fehler: mindestens ein Modul verfügt über einen ungelösten Einfuhr aufgrund einer fehlenden export-Funktion in eine implizit abhängige Modul.
Fehler: Module mit unterschiedlichen CPU-Typen gefunden wurden.
Fehler: Der Side-by-Side-Konfiguration Informationen "e:\xyz.EXE" Fehler enthält. Die Anwendung konnte nicht gestartet werden da die side-by-side-Konfiguration ungültig ist. Finden Sie die Anwendung Ereignisprotokoll oder verwenden Sie den Befehl-Linie sxstrace.exe tool für mehr Details (14001).
Den 32-bit-manifest sagt:
<?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>
In der Erwägung, dass die 64-bit-debug-manifest hat:
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
Was ich nicht verstehe ist, warum die debug 32-bit-build erfolgreich ausgeführt werden?
Bitte helfen Sie mir, wie ich bereits geprüft haben viele Fragen, aber haben nicht gefunden keine praktikable Lösung.
- Nicht eine doppelte, sondern das eventuell damit zusammenhängen? Nicht sicher, wenn dieses hilft bei allem: stackoverflow.com/questions/3803825/vc-crt-redist-problem
- Versuchen Sie, führen Sie den build auf einer anderen Maschine als Sie baute es auf? In der Regel die debug-runtime ist nicht "redistributable", das heißt, Sie können nicht führen Sie es auf anderen Maschinen ohne die Erstellung von merge-Module und installieren Sie Sie auf beliebige Maschine, die Sie versuchen, führen Sie den code auf.
- Ich glaube nicht, dass diese Frage werden helfen, dass die person, die fehlte, war eben das richtige release-runtime. Die debug-runtime ist ein Schmerz... der Regel den Aufbau einer "setup-Projekt" in der VS Griffen die merge-Module für Sie, so dass Sie installieren können, Sie zusammen mit Ihrer Binärdateien mit debug-build.
- Ich bin laufen/starten der exe von VS2008 Umwelt selbst. Seines auf der gleichen Maschine, wo ich es bauen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Danke für die Beantwortung meiner Frage. Endlich habe ich es gelöst und hier ist die Lösung:-
Mir war eine auf Qt basierende VC++ - Lösung, die app hing sich auf einige 3rd-party-dlls & libs.
Meine Aufgabe war die Bereitstellung von 64-bit-Unterstützung für meine Anwendung, für die musste ich bauen, Qt-und 3rd-party-dlls&libs in 64 bit OS.
Hab ich die CRT-Fehlermeldung, wenn ich versuchte runnig meine app Debuggen von 64-bit-config. Blieb der Fehler bestehen, auch nachdem ich kopiert hatte den folgenden CRTs, um bin-Ordner meiner Anwendung
redist\Debug_NonRedist\amd64\Microsoft.VC90.DebugCRT
:Microsoft.VC90.DebugCRT.manifest
msvcm90d.dll
msvcp90d.dll
msvcr90d.dll
Microsoft.VC90.DebugOpenMP
:vcomp90d.dll
War ich in der Lage zu starten meiner app erfolgreich im debug-64-bit-Modus, wenn ich die oben eingefügten CRT in die entsprechenden bin-Ordner, wo die Qt-und 3rd-party-Bibliotheken vorhanden waren.
Ich hatte das gleiche Problem nach dem hinzufügen einer manifest für "Privilege elevation" zu meinem Delphi-Konsolenanwendung (32bit, Problem wenn er lief auf Win7 x64).
Das Problem wurde für eine Abhängigkeit bereits erwähnt in der manifest-Datei:
Wenn ich entfernt es aus dem manifest, die Side-by-Side-Fehler verschwunden.
Abhängt, ist nicht gut mit side-by-side-Abhängigkeiten, denn es kann oft so Aussehen wie die dll gefunden wird, wenn tatsächlich eine etwas andere version erforderlich war.
Können Sie verwenden sxstrace.exe um eine bessere Vorstellung von dem, was fehlt:
http://blogs.msdn.com/b/junfeng/archive/2006/04/14/576314.aspx
Ereignisprotokoll zeigt meist side-by-side-Fehler, aber leider ist diese nicht geben Ihnen viele Informationen, außer, dass Sie ein problem haben.
Installieren von VS2008 SP1 dieses Problem zu beheben.
Vor installieren, stellen Sie sicher, dass die "64-bit-Compiler und-tools" Funktion wurde ausgewählt bei der Installation der Visual Studio das richtige. (Wenn Sie es installieren, nach der Installation von SP1 werden Sie wahrscheinlich benötigen, zu deinstallieren und installieren Sie das SP zu Holen Sie sich die fix.)
Um zu überprüfen, ob Sie die SxS-Eintrag installiert ist, sehen, ob es Verzeichnisse mit den Namen wie
amd64_microsoft.vc90.debugcrt*
im%WinDir%\WinSxS
.Der Grund ist ein bug in VS2008 installer. Es installiert nur die 32-bit-version des DebugCRT in die
<Windows>\WinSxS
cache, wo alle Programme finden können. Es tut installieren Sie die gleichen DLLs unter%ProgramFiles%
aber Programme können nicht finden Sie dort.Während das feature mit der x64 DebugCRT freigegebene assembly Komponente ist "angekündigt" anstatt installiert, aus irgendeinem Grund. Dies kann man in der installation meldet, dass VS2008 setup-Blätter in
%Temp%
von der installierende Benutzer durch suchen Sie für "DebugCRT
". Die gleichen Dateien sind zwar inc:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist
(als Teil einer anderen Komponente), aber nicht dupliziertWinSxS
.(Suchen Sie in
vs_setup.msi
Inhalt wth Orca, die wahrscheinlichste direkte Ursache scheint zu sein, dass versteckte Funktion Einträge fehlen diemsidbFeatureAttributesFollowParent
- flag, die bewirkt, dass Sie nie installiert).Was auch immer die Ursache ist, VS2008 SP1 behebt es. Die installation hat eine Nebenwirkung: es kann auch zwangsweise installiert viele andere Funktionen, die möglicherweise oder möglicherweise nicht ausgewählt wurden, während VS2008 installieren (z.B. MFC/ATL-Laufzeiten), aber im Vergleich zu einem Defekten installation, das ist ein viel geringerer Aufwand.