Как уменьшить размер простого приложения cpp? (скомпилировано с компоновщиком RAD Studio 2010) - PullRequest
0 голосов
/ 16 мая 2010

Я использую Rad Studio 2010 Cpp Builder. Я создал новое приложение SDI, добавил элемент управления TCppWebBrowser и простую кнопку, которая по нажатию кнопки запускает .navigate для TCppWebBrowser, скомпилировал его и получил файл размером 1,20 МБ, ожидал, по крайней мере, менее 700 КБ.

Как мне уменьшить размер скомпилированного exe?

Я не хочу использовать «сборку с пакетами времени выполнения», я знаю, что это сделает его очень маленьким, но я хочу получить все необходимые пакеты и зависимости внутри exe, но, возможно, я получаю больше, чем использую, я попытался снять / убрать множество дизайнерских пакетов (в проекте / опциях / пакетах), которые я не использую, но размер файла не уменьшился.

Также я подумал, что, возможно, компонент TForm, поставляемый с RAD Studio, дает мне больше материала, чем мне нужно, и это может сделать файл больше, я имею в виду, что мне нужно всего лишь удалить элемент управления веб-браузера и несколько кнопок в форме, может быть, есть минимальный компонент формы, который я мог бы использовать для замены TForm.

Я знаю, что могу использовать упаковщик наподобие upx, но я все еще хочу уменьшить размер наполовину, прежде чем упаковать его.

Любые предложения будут оценены.

Ответы [ 4 ]

2 голосов
/ 16 мая 2010

эта тема имеет несколько предложений:

1 голос
/ 17 мая 2010

Если вы действительно хотите небольшой исполняемый файл, то вам не следует использовать инфраструктуру VCL. Если требуется низкий размер файла, вы должны использовать Windows API напрямую. Это позволит избежать накладных расходов фреймворка. Скорее всего, вы получите некоторые накладные расходы, независимо от того, какую платформу вы используете, если только вы не используете все функции этой библиотеки. Вся идея фреймворка, подобного VCL, не в том, чтобы создавать небольшие исполняемые файлы, а в том, чтобы вам, программисту, было проще и быстрее разрабатывать ваше приложение.

Помимо рассмотрения изменения (или удаления) структуры, вот некоторые вещи, которые вы должны учитывать. Обратите внимание, что многие из этих методов могут оказать негативное влияние на производительность вашего скомпилированного исполняемого файла. Отказ от использования фреймворка может поставить вас в ситуацию, когда вам, возможно, придется заново изобретать колесо - так сказать, - чтобы сделать ваш код более уязвимым для ошибок. Поэтому взвесьте последствия, прежде чем выбрать этот путь.

  • Вы можете рассмотреть возможность использования исполняемого упаковщика, например UPX , это уменьшит размер исполняемого файла, но повлияет на производительность.

  • Вы можете оптимизировать компилятор для меньшего размера файла, чем для более быстрого выполнения.

  • Если вы действительно отчаянно нуждаетесь в небольшом исполняемом файле, то помимо того, что вы не используете инфраструктуру VCL, вы должны рассмотреть возможность не использовать RTL и динамически связывать многие из необходимых функций, таких как распределение памяти и т. Д. Вы можете найти хорошее руководство о том, как чтобы сделать это здесь: Методы для уменьшения размера исполняемого файла на этой странице есть много полезных советов, некоторые из которых уже упоминались в ответах здесь.

Суть в том, что когда вам нужны очень маленькие исполняемые файлы, вам не следует использовать какие-либо более крупные фреймворки. VCL имеет свои огромные преимущества в простоте использования и расширяемости, но не экономит место.

1 голос
/ 16 мая 2010

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

0 голосов
/ 16 мая 2010

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

...