Уменьшение размера сборки

0

Есть ли способ уменьшить размер сборки, когда я использую статическую привязку для библиотек времени выполнения C++ в VS2013?

Мой исходный файл был всего 15 КБ, но я не смог запустить его на других компьютерах без появления пропущенного сообщения.dll. Я решил использовать статическое связывание, и теперь размер ~ 100kb.

Я использую заголовки Windows.h и функции WinAPI.

  • 0
    Это пропущенная DLL из Windows или ваша собственная?
  • 0
    Вероятно, это можно сделать меньше, но трудно угадать детали, не видя исходного кода.
Показать ещё 5 комментариев
Теги:
runtime

3 ответа

1
Лучший ответ

Если вы собираетесь отображать MessageBox, вам не нужно ссылаться на какие-либо статические библиотеки.

#include <windows.h>

void entry(void) {    
    MessageBox(NULL, "Hello, World!", "", MB_OK);
    ExitProcess(0);
}

Компиляция и связь с использованием VC++ 2013, со следующей командной строкой:

cl/O1/GS- hello32.c/link/nodefaultlib/entry: entry/subsystem: windows user32.lib kernel32.lib

По крайней мере, для меня (с VC++ 2013), который создает исполняемый файл из 2560 байт (который зависит только от основных DLL файлов Windows, поэтому он не должен требовать ничего лишнего для запуска даже на самой голой системе).

1

Поскольку ваша основная цель - держать размер под контролем, dll - путь.

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

Распространяется для VS2013

  • 0
    Я хочу избавить людей от необходимости загружать их, когда они запускают мои программы. Статическое связывание только связывает необходимые библиотеки или все?
  • 0
    Тогда вы не можете сэкономить место для exe !!!
0

Если вы не используете MFC и т.д., Вы можете

#define WIN32_LEAN_AND_MEAN
#include <Windows.h>  

уменьшить размер вашего кода

  • 0
    Я не думаю, что это уменьшает размер кода - это старый, теперь в значительной степени бессмысленный способ сократить время компиляции: blogs.msdn.com/b/oldnewthing/archive/2009/11/30/9929944.aspx

Ещё вопросы

Сообщество Overcoder
Наверх
Меню