C ++ время выполнения требуется? - PullRequest
3 голосов
/ 02 апреля 2009

Почему некоторые проекты C ++ требуют установки пакета времени выполнения, а другие - нет?

РЕДАКТИРОВАТЬ: Как заставить проект работать без времени выполнения?

Ответы [ 4 ]

8 голосов
/ 02 апреля 2009

Некоторые будут статически связаны, а другие будут зависеть от динамической библиотеки, загружаемой во время выполнения. Чтобы статически связать свой собственный проект, вам необходимо изменить конфигурацию вашего проекта - то, как вы это сделаете, зависит от используемого компилятора / компоновщика и / или IDE.

2 голосов
/ 02 апреля 2009

Некоторые приложения встроены в системные библиотеки, это динамически связанные программы . Другие программы содержат код библиотек в исполняемый файл, это статически связанные программы .

Плюсы динамически связаны:

  • Меньший размер исполняемого файла программы.
  • Меньше потребления памяти, если динамически связанная библиотека используется совместно.
  • Лучшая производительность.

Минусы динамически связаны:

  • Зависимость от библиотеки.
  • Развертывание более сложное.

Плюсы статической связи:

  • Нет зависимостей.
  • Упрощенное развертывание приложения.

Минусы статических связей:

  • Размер исполняемого файла больше.

Чтобы получить статический проект, вам нужно настроить опцию в свойствах проекта.

1 голос
/ 02 апреля 2009

Вам необходимо установить исполняемый пакет на тот случай, если вы работаете со стандартной библиотекой C / C ++, связанной как DLL, а не как статическая библиотека. Поэтому один из способов избежать этого - статически связать стандартную библиотеку C / C ++ (настройки проекта C ++). Это может или не может быть возможно в вашем случае.

Если нет, вы можете использовать средство обхода зависимостей из дистрибутива Visual Studio, чтобы определить библиотеки DLL, необходимые для вашего приложения, и просто поместить их рядом с исполняемым файлом.

Что нужно знать в Visual Studio 2005 и более поздних версиях, так это то, что существуют манифесты для двоичных файлов, которые могут (и, вероятно, сделают :) сделать вашу жизнь сложнее. Тем более что SP1 для Visual Studio 2005 меняет версию библиотеки C ++, а также манифесты.

1 голос
/ 02 апреля 2009

Я думаю, что это относится к среде выполнения VS2005 с пакетом обновления 1. По какой-то причине MS добавила в нее некоторые функции, не совместимые с предыдущими версиями, поэтому для любого приложения, созданного на VS2005sp1, требуется среда выполнения.

...