2013-06-02 2 views
5

Ich habe ein C++/CLI-Projekt, das in VS2005 erstellt wurde. Ich hoffe, dies in VS2010 (oder 2012) als das meine IDE IDE und Ich muss einige Dinge im C++/CLI-Projekt auch zu ändern und es irritierend zu müssen hin und her zu vs2005 zu rekompilieren müssen laufen , Kopie usw. Der andere wichtige Grund ist, dass meine Projekte, die in VS2010/2012 laufen, in .NET4 sind, so gibt es keine Möglichkeit, alles auf VS2005 zu verschieben.führen vs2005 C++ Projekt in der späteren Version von Visual Studio

Das Projekt hat Abhängigkeiten von nicht verwalteten Bibliotheken von Drittanbietern, die sich Abhängigkeiten von den Debug-Versionen des c haben ++ verteilbare Bibliotheken (msvcr80.dll, msvcm80.dll, msvcp80.dll)

Als ich das Upgrade-Projekt lief ich erhielt ‚angegebene Modul konnte nicht gefunden werden‘ -

Es war dann bemerkte ich das cli Projekt gegen die späteren Versionen von msvc kompilierten (msvcr90.dll)

cli Montage Abhängigkeiten pro abhängt; VS2005 auf der linken Seite gegenüber 2008 auf der rechten Seite

enter image description here

Gibt es eine Möglichkeit eine neuere Version von VS zu machen, um die 2005-Bibliotheken kompilieren verwenden?

Update sein nicht lebenswichtig, welches es kompiliert gegen (und kann nicht möglich sein, sowieso), aber ist es möglich, und zu debuggen beide nebeneinander laufen zu lassen? Wenn ich versuche, das kompilierte Projekt bekomme ich diese Fehlermeldung auszuführen:

enter image description here

Ich habe versucht, aus dem VS2005 Projekt auf das VS2010-Projekt die Manifest-Datei zu kopieren, aber das funktioniert nicht (gleiche Fehlermeldung) . Ich habe auch das eingebettete Manifest deaktiviert und die generierte .manifest-Datei durch die von vs2005 ersetzt, was auch nicht funktioniert.

update2 ich nach diesem Fehler haben, indem sie die msvcr Bibliotheken im Manifest Angabe:

<dependentAssembly> 
     <assemblyIdentity type='win32' name='Microsoft.VC80.DebugCRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> 
    </dependentAssembly> 

aber jetzt, wenn ich meine Anwendung ausführen eine der Bibliotheken von Drittanbietern wirft ein AccessViolationException - Attempted to read or write protected memory wenn ich versuche, Verwenden Sie eine der Methoden. Dieser Code funktioniert ansonsten in vs2005 gut.

+0

downvoter pls erklären eine große Enttäuschung ist? – wal

+0

Im Allgemeinen ist dies kein Problem, wenn verschiedene Teile der Anwendung von VC 2005 und 2008 abhängen. Beide Laufzeitbibliotheken sollten installiert werden, um ein solches Programm auszuführen. –

+0

und für den Einsatz im Kontext von Visual Studio, dh Debugging? – wal

Antwort

4

Ich habe seit Daffodil for Visual Studio entdeckt, die genau das tut, was ich brauche, nämlich kompilieren gegen vc80 in Visual Studio 2010.Nach der Installation erhält das Dropdown-Menü Plattform-Toolset einige weitere Optionen:

nb, Sie müssen immer noch die entsprechende Version von Visual Studio installiert haben, z. B. wenn Targeting vc80 vs2005 erforderlich ist. NB2, Intellisense is broken in VS2010 für cli/C++, die nach der Höhe der Zeit mit der Erforschung immer das Projekt arbeiten auf VS2010

enter image description here

+0

+1 schönes finden! –

0

Haben Sie darüber nachgedacht, ein Manifest für die Anwendung zu erstellen? Ich meine, die Fehlermeldung besagt, dass das Problem darin besteht, dass das Manifest fehlt, also wird es vielleicht ausreichen, ein Manifest zu erstellen (entweder über die Projekteinstellungen) oder eine Handschrift hinzuzufügen?

See: Problem loading RT without Manifest

0

Von http://www.davidlenihan.com/2007/07/winsxs.html

„So wie weiß eine Anwendung, welche Version einer DLL zu laden, es braucht das ist, wo ein? "Manifest" ins Spiel kommt ein Manifest ist eine XML. Datei, die Informationen zum Erstellen des Verzeichnisses in C: \ Windows \ winsxs enthält, damit eine bestimmte DLL geladen werden kann. "

Verwandte Themen