Создайте любой проект Win32 Console, например с именем step14. Не забудьте установить поддержку MFC, как в "Шаг 1 - Минимальный проект".
#include "stdafx.h" #include "iostream.h" #include "afxwin.h" // библиотека MFC #include "conio.h" void main() { cout << "This not debug" << endl; #ifdef _DEBUG cout << "debug code" << endl; #endif getch(); // дождаться нажатия клавиши }
Запускайте, выполняйте. На экране должна появиться надпись.
This not debug debug code
Это говорит о том, что у нас включена отладка в код. В нашем EXE есть имена переменных, классов, функций, и весь код. Плюс к тому в нем есть код включенный через детективы компилятора _DEBUG. В MFC такого отладочного кода девать некуда. Честное слово. Посмотрите исподники MFC в каталоге:
Версия 5.0 Program Files\DevStudio\Vc\mfc\src Версия 6.0 Program Files\Microsoft Visual Studio\VC98\MFC\SRC
А теперь посмотрим размер вашего файла. В каталоге проекта есть папка Debug, где лежит Ваш файл и его размер где-то около...
Версия 5.0 - 900 kb Версия 6.0 - 1.25 mb
Как мне сказал один хороший знакомый - валерианки не хватит. Для того, чтобы получить нормальную версию, необходимо переключиться на проект Release. Это делается в меню Build далее Set Active Configuration:
Дальше надо выбрать Release:
Запустите сборку Rebuild all и проект на выполнение. На экране появится.
This not debug
В папочке проекта у вас появится папочка Release. Посмотрите там размер EXE файла всего около 100 КБ. Как впечатляет ?
Ещё размер зависит от того, как вы используете MFC. Есть два варианта Static Library и Dinamic Library. Если вы используете первый вариант, то код MFC будет в проекте и размер вырастет. Во втором варианте программа будет пользоваться DLL и размер будет меньше.
Так вот второй вариант, это потенциальные проблемы, вам надо следить при установке, чтобы все DLL были в системе. Кто гарантирует, что их потом не заменят или не удалят? Я помню на заре развития программирования на VB появились утилиты, которые прикрепляют DLL к EXE, они появились после горького опыта многих людей.
У меня пользователи не могут даже заставку на экране поменять. При таком подходе можно применять динамическую компоновку. А если ваша программа будет работать в экстремальных ситуациях и на большом удалении от Вас, оставляйте статическую компоновку. Жесткие диски по 10 GB и больше уже норма. Ничего с ними не станет. Сотрут игры :) !!!
Завершая разработку программы, сделайте версию компоновки Release.