Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / размер исполняемого файла / 8 сообщений из 8, страница 1 из 1
02.06.2007, 19:22
    #34569941
-Sergey-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер исполняемого файла
сегодня купил и установил MS Visual Studio 2005
решил проверить методом "иженерного тыка" что лучше Borland C++ or MsVC++ .
(вечный по сути вопрос..) на примере создания программы на чистом API
и вот теперь меня мучает дилема:
почему в перовом случае( MS VC++) размер исходного файла равен 40 960 байт
а во втором 8 704... ??????
может имеет место ситуация когда Борланд (аналогично как с Delphi требует что бы с файлом шел еще менджер памяти какая-то.dll ) ??

или микрософт решила про запас засунуть еще что-то в экзешник ??


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
#include <windows.h>



long WINAPI WndProc(HWND, UINT, WPARAM,LPARAM);


int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR     lpCmdLine,
                   int       nCmdShow)
{
//---------------------------------------------------
    HWND hwnd;
    MSG msg;
    WNDCLASS w;

    memset(&w, 0 ,sizeof(WNDCLASS));
    w.style = CS_HREDRAW | CS_VREDRAW;
    w.lpfnWndProc = WndProc;
    w.hInstance = hInstance;
    w.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    w.lpszClassName = (LPCWSTR)"My Class";
    RegisterClass(&w);
    hwnd = CreateWindow((LPCWSTR) "My Class",
		                (LPCWSTR) "My title",
						WS_OVERLAPPEDWINDOW,
						 300 ,
						 200 ,
						 200 ,
						 180 ,
						NULL,
						NULL,
						hInstance,
						NULL);
    ShowWindow(hwnd,nCmdShow);
    UpdateWindow(hwnd);
    while(GetMessage(&msg,NULL, 0 , 0 ))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
//---------------------------------------------------
}

LONG WINAPI WndProc(HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam)
{
    switch (Message){
    case WM_DESTROY: 
        PostQuitMessage( 0 );
        break;
    default:
        return  DefWindowProc(hwnd, Message, wparam, lparam);
    }
    return  0 ;
}

...
Рейтинг: 0 / 0
02.06.2007, 21:39
    #34570001
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер исполняемого файла
В Билдере в меню Projects->Options вкладка Packages крыжик "Build with runtime packages" установлен небось? )) - попробуй снять и сравни результат теперь
...
Рейтинг: 0 / 0
02.06.2007, 21:41
    #34570002
Lelikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер исполняемого файла
Я как-то оптимизировал по размеру небольшую свою сервисную прожку строк 700, поставил следующие опции:
1) Whole Program Optimization - Use Link-Time CG
2) Function level linking - Enable
3) Eliminate unref. data - Enable
4) Optimize for Win98 - Disable

Без использованием MFC И ATL получил в Release режиме размер в 10-11 килобайт.
...
Рейтинг: 0 / 0
02.06.2007, 21:51
    #34570006
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер исполняемого файла
мда... жгу сегодня целый день (( какие пакаджи - WinAPI-же!
...
Рейтинг: 0 / 0
03.06.2007, 10:16
    #34570221
sashka304
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер исполняемого файла
пакеджи пакеджами а компилятору пофиг у него настройки :)
...
Рейтинг: 0 / 0
03.06.2007, 16:35
    #34570464
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер исполняемого файла
-Sergey-почему в перовом случае( MS VC++) размер исходного файла равен 40 960 байт
а во втором 8 704... ??????

Собственно, исходник был не нужен.

Если эта утилита, стартует редко и используется достаточно эксклюзивно (комп. игра) то о размере памяти можно не беспокоится. Кроме того, практика показывает что лвиную долю памяти едят ресурсы (картинки, звуки и т.п).

Но если преследуется цель - клепать типовые утилиты (библиотеки, ISAPI-расширения, компоненты) то лучше выделить больший процент кода в shared dlls. Это уменьшит оверхед старт-стопа процессов и позволить легче реализовать обновление версий комплекса.
...
Рейтинг: 0 / 0
04.06.2007, 19:51
    #34573407
-Sergey-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер исполняемого файла
опять тестирую MS VS C++

тепрь вопрос такой что самому страшно задавать...

что стало с функцией MessageBox() ???
по чему при
MessageBoxA(0, "text", "Caption", 0);

вызывает ошибку компилятора

С:\documents and settings\admin.sergey.000\мои документы\visual studio 2005\projects\test\test\test.cpp(149) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [5]' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast - по смыслу ясно что ругается не неверное приведение типов


НО

функцией MessageBoxA(0, "text", "Caption", 0);
Нормально компилируется...


ВОПРОС:
за чем надо было переопределять/перегружать данную функцию?






Цель в жизни определяет все..
Выбор есть всегда..
Но мы часто не хотим его делать..
...
Рейтинг: 0 / 0
04.06.2007, 23:07
    #34573673
-Sergey-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер исполняемого файла
все разобрался покапался в настройках компилятора стоял по умолчанию флажок использовать
Unicode- поддержка висты
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / размер исполняемого файла / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]