Подтвердить что ты не робот

Как вы собираете визуальный проект студии С++ для выпуска?

Мне интересно, как сделать сборку релиза, которая включает в себя все необходимые DLL файлы в .exe, чтобы программа могла быть запущена на машине без разработки, без необходимости установки распространяемого на целевой машине Microsoft.

Без этого вы получите сообщение об ошибке, что конфигурация приложения неверна и переустановлена.

4b9b3361

Ответ 1

  • Выберите "Проект" → "Свойства"
  • Выберите "Конфигурация" → "Общие"
  • В поле для ссылки на MFC выберите статически ссылку.
  • Выберите Linker → Input. В разделе Дополнительные зависимости добавьте любые библиотеки, в которые требуется приложение, для статической ссылки.

Ответ 2

Вам нужно установить библиотеку времени выполнения (в разделе C/С++ → Code Generation) для ВСЕХ проектов для статической привязки, которая коррелирует со следующими конфигурациями по умолчанию:

  • Многопоточная отладка/выпуск
  • Отладка/выпуск одной части

В отличие от "DLL" версий этих библиотек.

Даже если вы это сделаете, в зависимости от библиотек, которые вы используете, вам может потребоваться установить модуль слияния/фреймворк/etc. Это зависит от того, доступны ли статические версии LIB ваших зависимостей.

Ответ 3

Помните, что Microsoft не рекомендует статически связывать среду выполнения с вашим проектом, поскольку это предотвращает ее обслуживание при обновлении Windows для исправления критических ошибок безопасности. Существуют также потенциальные проблемы, если вы передаете память между вашими основными файлами .exe и .dll, как если бы каждая из этих статических ссылок в среде выполнения вы могли столкнуться с проблемами malloc/free mismatch.

Вы можете включить DLL с исполняемым файлом, не компилируя их в .exe и не запуская инструмент redist - это то, что я делаю, и, похоже, он работает нормально.

Единственная муха в мазене состоит в том, что вам нужно дважды включать файлы, если вы распространяете для широкого диапазона версий Windows: более новые ОС нуждаются в файлах в явно определенных каталогах, а более старые хотят, чтобы все файлы в каталог программы.

Ответ 4

Вы будете искать статическую ссылку (в отличие от динамической ссылки)

Я не уверен, сколько из распространенных распространяемых MS статических ссылок.

Ответ 5

Если вы хотите узнать, какая dll ваша целевая машина отсутствует, используйте файл depend.exe, который использовался с MSDev, но также можно найти здесь. Тестирование этого на нескольких целевых компьютерах должно указать вам, какую dll вам нужно упаковать с вашим приложением.