Tamaño ejecutables c++

maky
01 de Febrero del 2006
Hola compañeros, estoy programando en C++ usando Borland y Dev-c++, el problema es que el tamaño de los ejecutables es enorme, 150.000 bytes en borland y 200.000 bytes en dev-c++, son normales estos tamaños para programas que lo unico que hacen es mostrar un mensaje en pantalla con cout ??

Gracias.

ilovenba
01 de Febrero del 2006
no es normal amigo,pero me gustaria que me enviaras tu programa para revisarlo y decirte cual es el problema

maky
01 de Febrero del 2006
No hace falta hacer mucho código:

#include <iostream>
#include <string>
using namespace std;

int main(void)
{
cout << "Hola";
return 0;
}

Con este simple código, en Borland C++ v.5.0 ocupa 171KB y en DEVC++ ocupa 266KB hablo del ejecutable .EXE

Un saludo.

Yo vengo de la programacion en entornos LINUX, que realemente no suelen pasar de 50 KB.

hiei
01 de Febrero del 2006
"Yo vengo de la programacion en entornos LINUX, que realemente no suelen pasar de 50 KB."
Vienbenido al infierno amigo...

Los ejecutables que usan iostream (y las STL en general) sobre Win32 y otros sistemas pobres en librerias de enlace dinamico estandares (miren que no incluir las STL como una DLL estandar de Windows... a quien le puede entrar en la caveza) son asi de grandes porque las enlazan estaticamente (en Linux/Free-Net-Open-OtrosBSD/Tru64/OpenSolaris/etc. se enlazan dinamicamente porque las librerias STL e iostream bienen como .SO dentro del sistema) asi que tienes tres opciones:
- Enlazarlas dinamicamente (habvra que ver como... ahora no me acuerdo)
- Comerte que sistema operativo sea cutre y aguantarte que para algo tan estupido te genere un biario de 200Kb
- Volver a Linux/*BSD y dejarte de joder con eso de guindos... es insalubre...

Bueno, en serio, el problema de enlazar dinamicamente es que las STL/iostream las tendras que redistribuir con tus programas (dudo que algun windows algun dia traiga las librerias que hacen falta para programar "de fabria") y te ocupara mas o enos lo mismo...

Puedes preguntarte por que es esto... Bien, segun los desarrolladores de las STL/iostream que usan los compiadores como Borland C++ y GCC para Win32 (DEVC++, MingW, LCC, etc.) es que no se ha podido independizar totalmente el codigo de las clases asi solo se nelaza lo estrictamente necesario... no se si las MFC tiene algo como esto, pero un producto de la compañia que hace el Windows deberia andar mejor (bueno, siempre hay sorpresas ¿no?)

maky
01 de Febrero del 2006
OK, entendido.