2016-11-11 8 views
2

Я наткнулся на проблемы с неправильным временем выполнения MSVC при связывании или запуске приложений, написанных на C или C++. Из-за этого я стараюсь быть точным при использовании правильных версий.Какую библиотеку времени Visual C/C++ выбрать?

Я вижу, что библиотека SDL (Simple DirectMedia Layer) предварительно скомпилирована с MSVCRT, которая AFAIK скомпилирована с MSVC 4.2 до 6.0. Тем не менее, эта предварительно скомпилированная библиотека отлично работает с моими приложениями, скомпилированными с гораздо более поздней версией Visual Studio 2015 v14.

  1. Почему нет проблем со связыванием старого MSVCRT с MSVCR140, например. SDL?
  2. Есть ли способ сделать библиотеку совместимой с любым большим компилятором Visual Studio?
  3. Как это решить с использованием других компиляторов, например. GCC или даже на Linux или Mac?
+0

Сделать статическую библиотеку - таким образом у вас не будет проблем с каким-либо пакетом – cup

+0

Но все же, как скомпилированная библиотека SDL не вызывает никаких проблем? –

+0

Кросс-платформенные библиотеки обычно начинаются в Unix, что делает его совместимым со многими Unix-аксессуарами. И хотел бы использовать компилятор с открытым исходным кодом, такой как GCC. Получение того, что портировано на Windows, обычно связано с MinGW. Который не писал собственную библиотеку времени исполнения, использует msvcrt.dll. Наличие нескольких копий CRT, загруженных в программу, довольно рискованно, интерфейс библиотеки должен быть тщательно разработан. Но, конечно же, SDL получил это право. Не отличается от использования winapi, он также использует msvcrt.dll. И был тщательно разработан. –

ответ

1
  1. Поскольку, давайте назовем их марочные, рабочая среда используется настолько широко, что они всегда есть. Но более поздние версии, используемые новым Visual C++, могут не отображаться автоматически. Кроме того, Visual C++ стандартизован в одной библиотеке времени исполнения в течение некоторого времени, обеспечивая обратную совместимость с существующими приложениями. Где-то рядом с Visual Studio 2012 это было отклонено в пользу версий, зависящих от версии.

  2. Вам необходимо упаковать приложение в установщик, который также устанавливает необходимое время выполнения (или время автономной работы, если вам требуется более одного).

  3. Приложения Linux упакованы (RPM, YUM и т. Д.) С зависимостями от компонентов времени исполнения. В основном то же самое, что и установщик Windows. Зависимости являются либо частью пакета, либо насыщены дистрибутивом. Linux-библиотеки с версиями, несколько версий могут быть установлены бок о бок, и приложения могут связываться с определенными версиями, если это необходимо.

 Смежные вопросы

  • Нет связанных вопросов^_^