Как вы упаковываете проект Visual Studio C ++ для выпуска?

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

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

6.08.2008 09:49:27
Просто используйте мастер настройки, такой как Inno Setup. Inno Setup, в частности, очень прост в использовании, если все, что вам нужно, это упаковать кучу файлов.
sashoalm 16.02.2015 10:34:07
6 ОТВЕТОВ
РЕШЕНИЕ
  1. Выберите Проект -> Свойства
  2. Выберите Конфигурация -> Общие
  3. В поле для того, как вы должны связать MFC, выберите статически связать его.
  4. Выберите Linker -> Input. В разделе « Дополнительные зависимости» добавьте все библиотеки, в которых ваше приложение должно статически связываться.
18
27.02.2017 16:41:15
Я мог что-то упустить (я не эксперт), но после выполнения ваших шагов мне все еще нужно упаковать все dll в папку exe . Разве OP не намеревался упаковывать все в exe- файл?
Malabarba 7.09.2011 04:09:01
@BruceConnor. Связывание библиотек статически включает их в исполняемый файл. Противоположность называется динамическим связыванием, которое позволяет исполняемому файлу искать dlls (= dunamic link library) при запуске.
danijar 26.01.2013 10:42:54

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

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

0
6.08.2008 12:10:55

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

0
7.08.2008 06:40:28

Необходимо установить для библиотеки времени выполнения (в разделе C / C ++ -> Генерация кода) для ВСЕХ проектов статическую связь, которая соответствует следующим конфигурациям сборки по умолчанию:

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

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

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

10
7.08.2008 21:11:52

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

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

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

4
9.09.2008 11:41:09

Вы должны использовать статическую ссылку и добавить все необходимые библиотеки в соответствии с дополнительными зависимостями.

0
5.03.2020 19:29:23