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