Почему связь с Direct X так сильно увеличивает размер моей программы?

Мне нужно сделать программу со следующими требованиями:

  • автономный (без установки)
  • оптимизирован по размеру
  • совместимость с Windows XP

Проблема в том, что, например, добавление #include <d3dx9.h> и использование одной функции увеличивает размер исполняемого файла на 370 КБ.

Есть ли способ / инструмент, поэтому, если я просто использую пару функций библиотеки, она не будет полностью связана с исполняемым файлом?

Я попробовал следующее безуспешно

  • режим выпуска
  • оптимизация всей программы
  • минимизировать размер (/ O1)
  • используйте маленький код (/ Os)
  • / OPT: REF
  • / OPT: ICF
  • использовать генерацию временного кода ссылки (/ LTCG)

Это тестовый код (я использую версию d3dx от октября 2004 года, которая позволяет статические ссылки, найденные здесь https://github.com/kavika13/jumpmanzero-thirdparty)

#pragma comment (lib, "d3dx9.lib")
#include <d3dx9.h>
int main() {
D3DXCreateSphere(0, 0, 0, 0, 0, 0);
return 0;
}

Примечания: Следует отметить, что при использовании гораздо большего количества функциональных возможностей одной и той же библиотеки увеличивается то же самое ~ 370 КБ.

1

Решение

Я собирался предложить / OPT: REF, но потом увидел, что вы уже попробовали это.

Если ничего не помогло, вы можете попробовать один из вариантов «исполняемого упаковщика», например ASPack (aspack.com) или UPX (upx.sourceforge.net).

Они будут сжимать ваш исполняемый файл и не будут вводить дополнительные зависимости.

0

Другие решения


По вопросам рекламы [email protected]