На протяжении многих лет моя заявка выросла с 1 МБ до 25 МБ, и я ожидаю, что она вырастет до 40, 50 МБ. Я не использую DLL, но поместил все в этот большой исполняемый файл.
Наличие одного большого исполняемого файла имеет определенные преимущества:
- Установка моего приложения у клиента действительно: копирование и запуск.
- Обновления могут быть легко зашифрованы и отправлены клиенту
- Существует риск иметь противоречивую DLL (где у клиента есть версия X EXE, но версия Y библиотеки DLL)
Большим недостатком большого EXE является то, что время компоновки растет экспоненциально.
Дополнительная проблема заключается в том, что часть кода (скажем, около 40%) используется совместно с другим приложением. Опять же, преимущества заключаются в следующем:
- Существует никакой риск наличия смешанных версий DLL-версий.
- Каждый разработчик может вносить изменения в общий код, который ускоряет разработку.
Но опять-таки это серьезно повлияло на время компиляции (каждый снова компилирует общий код на своем ПК) и время компоновки.
Вопрос Группировка DLL для использования в Executable упоминает о возможности смешивания DLL в одном исполняемом файле, но похоже, что это все равно требует, чтобы вы связали все функции вручную в своем приложения (используя LoadLibrary, GetProcAddress,...).
Каково ваше мнение о размерах исполняемых файлов, использовании DLL и лучшем "балансе" между простым развертыванием и простой/быстрой разработкой?