vs2012 совместимость с наборами инструментов

В моем VS2012 доступно 4 набора инструментов: v90, v100, v110 и v110_xp. Я провел простой тест с двумя проектами testlib (статическая библиотека) и testexe (консольное приложение). Интерфейс был только одна функция с подписьюvoid test(), Результаты, достижения:

testlib (v90), testexe (что-либо кроме v90) -> не связываетtestlib (v100), testexe (v110 или v110_xp) -> делает ссылку

Однако мне показалось несколько странным, что v100 и v110 будут соединяться, поэтому я попытался немного усложнить сценарий. Теперь мой метод выглядит так:std::map test(const std::string& arg), Как и ожидалось, testlib (v100) и testexe (v110) не связываются (mismatch detected for '_MSC_VER').

Но все же testlib (v110) и testexe (v110_xp) связывают друг друга, и полученный exe работает на Windows XP. Это случайно или это поддерживаемый сценарий? Если это случайно, то пример кода, который использует только функции, доступные в v110_xp и нарушает эту совместимость, будет приветствоваться. Мне интересно, стоит ли мне развертывать две версии моей библиотеки на моих клиентах, или подойдет только та, которая скомпилирована с v110.

Ответы на вопрос(3)

Ваш ответ на вопрос