Обычная проблема заключается в том, что код, сгенерированный в разных версиях Visual Studio, использует разные версии библиотек времени выполнения.
В зависимости от того, как разработана библиотека, это часто может вызывать проблемы, поскольку существует несколько версий(например) функции выделения и освобождения, и может быть легко получить ошибки кучи, когда указатель, выделенный в одной библиотеке времени выполнения, передается функции освобождения из другой.Это может произойти независимо от того, связаны ли библиотеки времени выполнения динамически или статически.
Даже если эта проблема решается из-за хорошего дизайна библиотеки, все равно неэффективно иметь несколько куч C в одной программе.
Существуют и другие потенциальные проблемы с функциями библиотеки времени выполнения, которые полагаются на статически хранимую информацию, такую как srand
и rand
, локали и уродливые унаследованные функции, такие как strtok
.
, даже когда есть возможность связатьв разных версиях Visual Studio обычно гораздо безопаснее этого не делать.