Frage

Hier ist meine Konfiguration:

  • Computer A - Windows 7, MS Visual Studio 2005 für Win7 -Kompatibilität (8.0.50727.867) gepatcht.
  • Computer B - Windows XP SP2, MS Visual Studio 2005 installiert (8.0.50727.42)

Mein Projekt hat einige externe Abhängigkeiten (vorgefertigte DLLs - entweder aufbauen EIN oder aus dem Internet heruntergeladen), ein paar DLLs aus Quellen und eine ausführbare Datei. Ich entwickle meistens auf EIN Und dort ist alles in Ordnung. Irgendwann versuche ich, mein Projekt auf dem Computer zu erstellen B, Kopieren der vorgefertigten DLLs in den Ausgangsordner. Alles baut gut auf, aber ich versuche, meine Bewerbung zu starten, ich bekomme ich

Die Anwendung konnte nicht ordnungsgemäß initialisieren (0xc0150002) ....

Das Ereignisprotokoll enthält zwei davon:

Abhängige Montage Microsoft.VC80.CRT konnte nicht gefunden werden, und der letzte Fehler war, dass die referenzierte Baugruppe nicht in Ihrem System installiert ist.

plus etwas amüsanter

Der Aktivierungskontext erzeugt für einige fehlgeschlagen.dll. Referenzfehlermeldung: Die Operation erfolgreich abgeschlossen.

Zu diesem Zeitpunkt versuche ich mein Google -Fu, aber vergeblich - praktisch alle Treffer geht es darum, Binärdateien auf Maschinen auszuführen ohne Visual Studio installiert. In meinem Fall werden jedoch die ausführbaren Funktionen nicht auf dem von ihnen erstellten Computer ausgeführt.

Der nächste Schritt war, Abhängigkeits Walker zu versuchen und es verblüffte mich noch mehr - meine DLLs, die aus Quellen auf derselben Box gebaut wurden, können nicht finden MSVCR80.DLL und MSVCP80.DLL, Die ausführbare Datei scheint jedoch in Bezug auf diese beiden DLLs in Ordnung zu sein, dh wenn ich die ausführbare Datei mit Abhängigkeitswanderer öffne, zeigt es, dass die MSVC?80.DLLS kann gefunden werden, aber wenn ich eine meiner DLLs öffne, heißt es, dass sie es nicht können. Dort habe ich völlig keine Ideen heraus, was ich tun soll. Ich frage dich, lieber Stackoverflow :)

Ich gebe zu, ich bin ein bisschen verschwommen auf der gesamten Side-by-Side-Sache, daher wird auch allgemeines Lesen zu diesem Thema geschätzt.

War es hilfreich?

Lösung

Ihre Frage hat die Antwort auf Ihr Problem: Computer A verfügt über eine VC -Laufzeit der Version 8.0.50727.867, und Computer B hat nur Version 8.0.50727.42.

Sie haben Ihre Bibliotheken auf dem Computer A erstellt und sie sind von Version 867 der VC -Laufzeit abhängig. (Dies finden Sie in Manifest eingebettet in die Bibliotheken.) Wenn Sie sie auf Computer B kopieren, benötigen diese Bibliotheken immer noch Version 867 der Laufzeit, aber nur Version 42.

Um die Abhängigkeiten der VC Runtime Assembly zu beheben, müssen Sie VC -Laufzeit -Umverteilung von Version 867 auf dem Computer B. installieren. Ich würde Ihnen jedoch empfehlen, Visual Studio auf dem Computer B zu aktualisieren, damit Sie dieselbe Version auf beiden Computern haben. Und noch besser, installieren Sie Visual Studio 2005 SP1 auf beiden Computern und installieren Sie dann Dieses Sicherheits -Update für SP1. Nach der Installation der letzteren sind Ihre Bibliotheken von der Version abhängig 8.0.50727.4053.

Andere Tipps

Es ist möglich, dass das Problem mit verschiedenen Versionen von CRT -Laufzeit in beiden Maschinen zusammenhängt. Ist es möglich, alle Ihre Module so zu erstellen, dass sie statisch verknüpfte CRT -Laufzeit verwenden, um dies zu überprüfen?

Zuerst würde ich diese vorgebauten DLLs überprüfen, indem ich das Dummy -Projekt zum Laden vorbereitete

Ich hatte kürzlich den gleichen Fehler beim Erstellen von Projekten auf einer Maschine und dann auf eine andere Maschine. Der größte Schuldige hier ist wahrscheinlich eine Debug -Konfiguration für eine der binären Komponenten. Das heißt, MSVC hat die ziemlich strenge Anforderung aller DLLs/Exen, die mit derselben Laufzeitbibliothek, Debugg oder Veröffentlichung erstellt werden, sonst arbeiten sie nicht zusammen.

Wenn ich dies passierte, neigen sie auch dazu, gut zu kompilieren, aber wenn Sie versuchen, sie auszuführen, erhalten Sie diese extrem kryptische Fehlermeldung.

Sie müssen sicherstellen, dass jedes Modul, das Sie zusammen erstellen, dieselbe Konfiguration verwendet und somit über die gesamte Build -Kette debuggen oder freigegeben werden. Dieser Fehler erfolgt wahrscheinlich auch in anderen Bibliotheken Missverhältnisse. Stellen Sie daher sicher, dass Ihr MSVC genau dieselbe Version auf den Maschinen ist, in denen Sie sich aufbauen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top