Visual C++ Toolkit 2003 in VC++ 6.0
-
Hallo zusammen,
ich suche nach einer einfachen Möglichkeit, einen Compilerwechsel durchzuführen. Ich möchte das von Microsoft frei zur Verfügung stehende Visual C++ Toolkit 2003 im Visual Studio 6.0 integrieren, um einen neueren Compiler und die bestehende IDE einzusetzen.
Die aus einigen Quellen beschriebene Vorgehensweise
http://pixwiki.bafsoft.com/wiki/index.php/Using_the_Optimizing_VC7_Compiler_with_the_VC6_IDE
http://www.codecomments.com/archive292-2004-5-196083.htmlist folgende:
-Installation des Toolkits
-Pfadanpassungen der ausführbaren Dateien unter VC++ 6.0
-Deaktivierung einiger Run-Time Checks, die der VC 7.1 unterstützt
-Fixen eines sogenannten __ftol2 errors (erstmal uninteressant)Leider habe ich hier Probleme
:
Die dort beschriebenen Schritte funktionieren bei mir in dieser Form nicht.Wenn ich nur den Pfad für den Compiler und Linker ändere, kann ich meinen eigenen Code nicht übersetzten:
...
:\Programme\Microsoft Visual Studio\VC98\Include\UTILITY(81) : warning C4346: '_It::iterator_category' : dependent name is not a type
prefix with 'typename' to indicate a type
c:\Programme\Microsoft Visual Studio\VC98\Include\UTILITY(84) : see reference to class template instantiation 'std::iterator_traits<_It>' being compiled
c:\Programme\Microsoft Visual Studio\VC98\Include\UTILITY(81) : error C2146: syntax error : missing ';' before identifier 'iterator_category'
c:\Programme\Microsoft Visual Studio\VC98\Include\UTILITY(81) : error C2501: 'std::iterator_traits<_It>::iterator_category' : missing storage-class or type specifiers
c:\Programme\Microsoft Visual Studio\VC98\Include\UTILITY(82) : warning C4346: '_It::value_type' : dependent name is not a type
...Was wohl daran liegt, dass der neue Compiler nicht mit den "alten - nicht ANSI- konformen" Headerdateien der STL klarkommt.
Wenn ich die vom Toolkit mitgelieferten Header und libs mit in die globalen Pfade unter "Extras" --> "Optionen" --> "Directories" mitaufnehmen, kann der Code kompiliert werden, aber leider kriege ich das Ganze nicht gelinkt:
LINK : warning LNK4224: /PDBTYPE is no longer supported; ignored
......
...obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::all
ocator<char> >(char const *)" (__imp_??0?char_traits@D@std@@V?basic_string@DU?allocator@D@2@@std@@QAE@ID@Z) referenced in function "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl std::operator
+<char,struct std::char_traits<char>,class std::allocator<char> >(char,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??char_traits@D@std@@V?basic_string@DU?allocator@D@2@@0@DABV10@@Z)
...Hat jemand irgendeine Idee oder ähnliche Erfahrungen gemacht???
Besten Dank im Voraus
-
Der Compiler des VS.NET 2003 wurde stark verbessert und kompiliert manchen Code der noch mit dem VS6 funktioniert hat nicht mehr, weil er nicht dem C++-Standard entspricht.
-
hallo dEUs,
mit der Antwort gib ich mich in dieser Form so nicht zufrieden
Ich weiss, dass der VC 7.1 wesentlich strenger ausgelegt ist, siehe auch
Ich habe ja daher ja auch die alten Header-Dateien gegen die neuen ausgetauscht, was dazu führte, dass ich den Code auch kompilieren konnte. Leider klappt das Binden des Objekt-Codes nicht.
Ich glaube momentan eher, dass ein Mischen von alten Run-Time Bibliotheken mit neuen Run-Time-Libs vorliegt. Mit dem Kompilieren und Erstellen von statischen Bibliotheken habe ich bisher auch keine Probleme, aber das Erstellen von DLLs macht Probleme (hier werden ja auch statische Run-Time Bibliotheken dazugebunden). Momentan verwende ich die Multithreaded DLL Variante als Laufzeit bibliothek, also wird die MSVCRT.LIB benutzt.
Sieht jemand hier eine Möglichkeit, oder hatte jemand schon ähnliche Probleme??
-
Sorry, hab deinen Text nur überflogen und deswegen nicht mitbekommen, dass das kompilieren inzwischen klappt. Kann dir deswegen auch nciht weiterhelfen.
-
Ich habe ja daher ja auch die alten Header-Dateien gegen die neuen ausgetauscht, was dazu führte, dass ich den Code auch kompilieren konnte. Leider klappt das Binden des Objekt-Codes nicht.
Nur das? Die Libraries musst du schon auch austauschen
(Habs ebenfalls nur überflogen)
MfG SideWinder
-
Hi,
das Ganze hängt tatsächlich mit den unterschiedlichen Laufzeitbibliotheken zusammen:
Wenn man als Laufzeitbibliothek Single-Threaded auswählt, gehts, auch die Multihreaded-Variante (nur im Release Modus). Die mulithreaded-dll Variante tut überhaupt nicht, da im Toolkit nur folgende Libs mitgeliefert werden:kernel32.lib
libc.lib und libcd.lib
libcmt.lib
libcp.lib und libcpd.lib
libcpmt.lib
mscoree.lib
und oldnames.libWeiss jemand, ob und wo man an die neuen Multihreaded Dll- Libraries rankommt?