Kompatybilność zestawu narzędzi vs2012
W moim VS2012 mam 4 zestawy narzędzi: v90, v100, v110 i v110_xp. Wykonałem prosty test z dwoma projektami testlib (biblioteka statyczna) i testexe (aplikacja konsolowa). Interfejs był tylko jedną funkcją z podpisemvoid test()
. Wyniki:
Wydawało mi się jednak dziwne, że v100 i v110 będą się łączyć, więc spróbowałem trochę skomplikować scenariusz. Teraz moja metoda wygląda tak:std::map<std::string, std::string> test(const std::string& arg)
. Zgodnie z oczekiwaniami testlib (v100) i testexe (v110) nie łączą się (mismatch detected for '_MSC_VER'
).
Jednak nadal testlib (v110) i testexe (v110_xp) wykonują łącze, a wynikowy exe działa w systemie Windows XP. Czy to przypadek, czy jest to obsługiwany scenariusz? Jeśli przypadkiem jest to przykładowy kod, który używa tylko funkcji dostępnych w wersji v110_xp i łamie tę zgodność, byłoby mile widziane. Zastanawiam się, czy powinienem wdrożyć dwie wersje mojej biblioteki na moich klientach, czy tylko ta skompilowana za pomocą v110.