Как вы упаковываете проект Visual Studio C ++ для выпуска? - PullRequest
35 голосов
/ 06 августа 2008

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

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

Ответы [ 5 ]

17 голосов
/ 13 августа 2008
  1. Выберите проект -> Свойства
  2. Выбрать конфигурацию -> Общие
  3. В поле для того, чтобы связать MFC, выберите статическое связывание.
  4. Выберите Linker -> Input. В разделе Дополнительные зависимости добавьте все библиотеки, в которых требуется приложение для статической ссылки.
10 голосов
/ 08 августа 2008

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

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

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

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

4 голосов
/ 09 сентября 2008

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

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

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

0 голосов
/ 07 августа 2008

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

0 голосов
/ 06 августа 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...