Visual Studio: Kompatibilität von CRT Versionen
-
Hallo!
Nehmen wir an, Visual Studio 2013 Update 1 kommt mit bestimmten CRT Versionen (msvcp120/msvcr120.dll).
Diese DLLs packe ich mit in den Programmordner.
Nun mache ich ein Visual Studio Update 2 und baue mein Programm neu. Doch es haben sich die CRT Versionen (DLL Dateiversionen) geändert.
Muss ich nun die neuen CRT DLLs (gleicher Name) im Programmordner updaten, oder wird das Programm mit denen von Update 1 funktionieren?Danke!
-
CRT Versionen sind nicht kompatibel. Nicht mal innerhalb eines Service Packs! Du musst also genau die ausliefern, gegen die Du gebaut hast...
-
Ok, danke.
-
Ist schon ein Weilchen her, aber ich hätte noch eine Frage.
Wie weiß die .exe Datei, welche CRT Version sie braucht?
Im (eingebetteten) Manifest steht sie nicht.
Dependency Walker zeigt mir an, dass diese DLL verwendet wird:C:\Windows\SysWOW64\MSVCR120.dll
Das ist aber doch immer die neueste Version (je nach Visual Studio Update X).
Die .exe habe ich vielleicht mit Update 1 erstellt (und somit vielleicht mit einer niedrigeren CRT DLL-Version), jedoch mittlerweile Update 4 installiert.Das ist doch jetzt ein Problem
-
Das wäre mir neu, daß es da Inkompatibilitäten innerhalb eines VS-Releases gäbe.
Natürlich, wenn in Update N etwas neues hinzugefügt wurde und dein Programm das benutzt, dann tust du gut daran, mindestens die CRT für Update N zu verwenden. Aber wenn dann Update N+1 kommt, sollte dein Programm auch mit den CRTs für Update N+1 noch funktionieren. Ebenso sollten Programme, die mit Update N-1 gebaut wurden, auch mit der CRT von Update N noch funktionieren.
-
Aha, okay, irgendwie dachte ich mir das schon.
Aber @Jochen ist da scheinbar anderer Meinung, oder vielleicht hat er es falsch verstanden.
-
Hm, meiner Meinung nach sollten die CRT-Versionen innerhalb einer Major-Version über die Updates hinweg kompatibel sein (zumindest seit VS2012): http://stackoverflow.com/questions/15836087/do-visual-studio-2012-updates-break-c-abi
@Jochen Kalmbach: Kannst du ein konrektes Gegenbeispiel nennen, bei dem es nicht funktioniert?
Natürlich kann es trotzdem sein, dass die alten CRT-DLLs noch irgendwelche Bugs enthalten, die mittlerweile in neueren Versionen gefixt wurden...
-
Bloops schrieb:
Hm, meiner Meinung nach sollten die CRT-Versionen innerhalb einer Major-Version über die Updates hinweg kompatibel sein (zumindest seit VS2012): http://stackoverflow.com/questions/15836087/do-visual-studio-2012-updates-break-c-abi
Ahh, danke, damit ist eigentlich alles klar