2009-06-12 3 views
3

HI Ich habe eine EXE von Visual Studio mit C++ erstellt. Ich habe eine com-Komponente erstellt, die alle Instanzen von sqlserver auf einer bestimmten Maschine zu erkennen. Jetzt in C++ - Programm mit Visual Studio ich schreibe main() und konsumiere die com-Komponente.Anwendung konnte nicht gestartet werden, da die Konfiguration Seite an Seite nicht korrekt ist

Nun sollte es auf meine beiden Workstations worrk die w2k3 machines.And sind, wenn ich versuche, das gleiche auf w2k8 Maschine zu laufen bekam ich den Fehler als

die Anwendung konnte nicht gestartet werden, weil die Seite an Seite configauration ist falsch und für Details das Anwendungsereignisfehlerprotokoll sehen

i öffnen Sie das Anwendungsfehlerprotokoll und fand den Fehler als

Aktivierung Kontexterzeugung für „E: \ SQLDiscovery.exe“ ist fehlgeschlagen. Abhängige Assembly Microsoft.VC80.DebugCRT, processorArchitecture = "x86", publicKeyToken = "1fc8b3b9a1e18e3b", type = "win32", Version = "8.0.50608.0" konnte nicht gefunden werden. Bitte benutzen Sie sxstrace.exe für eine detaillierte Diagnose.

Wie dieses plz lösen mir

Antwort

6

Sie haben dazu beitragen, die VC8 Runtime auf W2k8 zu installieren. Dies liegt an der Windows-Side-by-Side-Konfiguration. Beim Erstellen und Exportieren wird eine spezielle Datei namens "Manifest" generiert. Diese Manifestdatei beschreibt die Version der C-Laufzeitbibliothek, die von Ihrer Anwendung benötigt wird, um korrekt ausgeführt zu werden.
Das Manifest wird dann in Ihre exe/dll eingebettet (wenn Sie die .dll/exe mit Notepad geöffnet haben und bis zum Ende gescrollt haben, sehen Sie es im xml Format), Sie können auch mt.exe (manifest tool) benutzen um das Manifest in einer beliebigen ausführbaren Datei anzuzeigen.

Wenn Sie Ihre Anwendung auf W2k8 verschieben, müssen Sie sicherstellen, dass die abhängige CRT installiert ist (es sei denn, Sie verknüpfen Ihre App statisch mit CRT).

können Sie dieses Problem lösen, indem nur einer dieser beiden 1- Installieren VC8 Debug CRT 2- Erstellen Sie App als statisch

verknüpft

Überprüfen Sie diesen Blog aus und http://detritus.blogs.com/lycangeek/2006/08/diagnosis_of_wi.html Es enthält nützliche Informationen darüber, wie Sie debuggen winsxs Probleme.

this helps

+0

Bitte lassen Sie mich wissen, wenn dies Ihrem Problem hilft. – mfawzymkh

+0

Erstelle deine App als statisch verlinkt Wie das geht plz sag mir – Cute

+1

wenn du es in VS erstellst, gehe zu Projekte-> Einstellungen-> C/C++ -> Codegenerierung und wähle Laufzeit-Lib-Optionen statt/MTd/MDd – mfawzymkh

1

Das Problem ist, dass die EXE den Debug-CRT-DLLs benötigt und sie sind auf den 2008-Computer nicht vorhanden ist. Wie Sie das beheben, hängt davon ab, was Sie tun wollen/müssen. Wenn Sie die Debug-CRT verwenden möchten, verbinden Sie entweder statisch mit dem CRT (dadurch entfällt die Notwendigkeit, die DLLs auf dem Computer 2008 zu haben) oder erstellen Sie ein Verzeichnis namens "Microsoft.VC80.DebugCRT" im selben Verzeichnis wie das EXE, und legte die notwendigen DLLs und die Debug-CRT-Manifest-Datei dort.

Die Debug-CRT ist nicht verteilbar, AFAIK gibt es keine Möglichkeit, "die Debug-CRT installieren" anders als die Installation von Visual Studio.

Wenn Sie den Debug-CRT nicht benötigen, verknüpfen Sie ihn mit der Release-Version. Auch hier müssen Sie zwischen der statischen LIB und der DLL-Version wählen. Die gute Nachricht ist, dass die Release-CRT verteilbar ist, überprüfen Sie Ihr Visual Studio-Installationsverzeichnis für vcredist_x86.exe.

1
  1. Senden Sie keine Debug-Builds. Erstellen Sie es in Release und dann auf Ihrem Zielcomputer.
  2. Wenn Sie die CRT (Sie tun) verwenden, müssen Sie die CRT redistributables installieren. Sie müssen (auf dem Zielcomputer) diejenigen installieren, die der Version & SP des Compilers entsprechen, den Sie zum Erstellen der Anwendung verwendet haben. Es ist sehr einfach & gängige Praxis

Hier ist ein Link, wo Sie die redists für VC8 bekommen: link Und hier ist ein Link für die redists für VC8 SP1: link text

Gerade google "vc8 redist" oder je nachdem, welche Version, die Sie verwenden, und Sie werden Ihren Weg finden.

  1. Verbinden Sie Ihre App nicht statisch, um zu vermeiden, dass die Redists installiert werden müssen.