Vs2012 Toolset-Kompatibilität

In meinem VS2012 stehen 4 Toolsets zur Verfügung: v90, v100, v110 und v110_xp. Ich habe einen einfachen Test mit zwei Projekten durchgeführt: testlib (eine statische Bibliothek) und testexe (Konsolenanwendung). Die Schnittstelle war nur eine Funktion mit Signaturvoid test(). Die Ergebnisse:

testlib (v90), testexe (alles andere als v90) -> verknüpft nichttestlib (v100), testexe (v110 oder v110_xp) -> verlinkt

Es schien mir jedoch etwas seltsam, dass sich v100 und v110 verbinden würden, daher habe ich versucht, das Szenario ein wenig zu verkomplizieren. Nun sieht meine Methode so aus:std::map<std::string, std::string> test(const std::string& arg). Wie erwartet verbinden sich die Testlib (v100) und die Testexe (v110) nicht (mismatch detected for '_MSC_VER').

Die Verknüpfungen zwischen testlib (v110) und testexe (v110_xp) funktionieren jedoch weiterhin, und die resultierende Exe funktioniert unter Windows XP. Ist das nur Zufall oder handelt es sich um ein unterstütztes Szenario? Wenn dies nur zufällig ist, wäre ein Beispielcode, der nur die in v110_xp verfügbaren Funktionen verwendet und diese Kompatibilität aufhebt, willkommen. Ich überlege, ob ich meinen Kunden zwei Versionen meiner Bibliothek bereitstellen soll oder nur die mit v110 kompilierte.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage