2

Ich habe ein C++ - Projekt, das ich in VS2008 baue. Dieses Projekt verknüpft auch eine Bibliothek (DLL + Import lib), die mit VS2005 erstellt wurde, und lädt daher VS2005 Debug CRT-Bibliothek (alles ist ein Debug-Build).Side-by-Side-Manifest-Problem mit VS2005 & VS2008

Beim Versuch, diese in VS2008 erstellte ausführbare Datei auszuführen, erhalte ich einen Fehler beim Laden aufgrund der VS2005-DLL, die die Debug-CRT-Bibliotheken nicht findet, obwohl ich VS2005 mit SP1 installiert habe. Ich habe auch Windows-Updates überprüft, daher bin ich mir nicht sicher, was ich noch tun kann.

Wie kann ich dieses Problem diagnostizieren? Ich habe die Ereignisanzeige in Windows angeschaut und festgestellt, dass sie die Debug VC80 CRT-Bibliothek nicht finden kann, aber das ist alles, was ich weiß. Da ist ein Versionskonflikt irgendwo hier, denke ich, ich weiß einfach nicht, wie ich das beheben soll, da ich nicht viel über dieses Manifest/Side-by-Side-Zeug weiß.

Das Betriebssystem, auf dem ich baue, ist Windows XP 32-Bit. Ich habe VS2008 SP1 und VS2005 SP1 installiert (also sollten alle Debug-Manifeste/CRT-DLLs verfügbar sein)

+0

Verstehe ich das richtig, dass Sie eine ausführbare Datei A haben, die dynamische VS2k8-Bibliotheken verwendet, und eine DLL B, die dynamische VS2k5-Bibliotheken verwendet? Lib-Mismatches werden wahrscheinlich nicht fliegen. – user7116

+0

@sixlettervariables: Das ist richtig. Aber es sollte funktionieren (und funktioniert auf einem Windows 7-Rechner). Aber ich versuche, meine Umgebung einzurichten und es auf einem Windows XP-Rechner (gleicher Code, gleiche DLLs) funktioniert und es funktioniert einfach nicht. Ich habe es früher mit Windows XP arbeiten lassen, aber es ist schwierig, konsistente Ergebnisse zu erzielen. Es scheint, als würde der geringste Unterschied bei Windows-Updates dazu führen, dass alles kaputtgeht. –

+1

Ich hatte eine Menge Probleme mit ähnlichen Setups. Es ist besser, entweder die ursprünglich benötigten DLLs (nicht die vollständige CRT) zu verwenden und sie am besten in derselben CRT von den Quellen wiederherzustellen. – MPelletier

Antwort

0

Lernen Sie zu überprüfen oder zu erstellen oder zu überprüfen, assembly manifests.

Here is more info once you get that done.

Unter Windows XP, wenn eine externe Manifest im Antrag des lokalen Ordner vorhanden ist, verwendet das Betriebssystem-Lader dieses Manifest anstelle eines offensichtlichen innerhalb des binären eingebettet. Unter Windows Server 2003 und höheren Versionen von Windows ist das Gegenteil der Fall - das externe Manifest wird ignoriert und das eingebettete Manifest wird verwendet, wenn es vorhanden ist.

Verwandte Themen