Я наткнулся на проблемы с неправильным временем выполнения MSVC при связывании или запуске приложений, написанных на C или C++. Из-за этого я стараюсь быть точным при использовании правильных версий.Какую библиотеку времени Visual C/C++ выбрать?
Я вижу, что библиотека SDL (Simple DirectMedia Layer) предварительно скомпилирована с MSVCRT, которая AFAIK скомпилирована с MSVC 4.2 до 6.0. Тем не менее, эта предварительно скомпилированная библиотека отлично работает с моими приложениями, скомпилированными с гораздо более поздней версией Visual Studio 2015 v14.
- Почему нет проблем со связыванием старого MSVCRT с MSVCR140, например. SDL?
- Есть ли способ сделать библиотеку совместимой с любым большим компилятором Visual Studio?
- Как это решить с использованием других компиляторов, например. GCC или даже на Linux или Mac?
Сделать статическую библиотеку - таким образом у вас не будет проблем с каким-либо пакетом – cup
Но все же, как скомпилированная библиотека SDL не вызывает никаких проблем? –
Кросс-платформенные библиотеки обычно начинаются в Unix, что делает его совместимым со многими Unix-аксессуарами. И хотел бы использовать компилятор с открытым исходным кодом, такой как GCC. Получение того, что портировано на Windows, обычно связано с MinGW. Который не писал собственную библиотеку времени исполнения, использует msvcrt.dll. Наличие нескольких копий CRT, загруженных в программу, довольно рискованно, интерфейс библиотеки должен быть тщательно разработан. Но, конечно же, SDL получил это право. Не отличается от использования winapi, он также использует msvcrt.dll. И был тщательно разработан. –