Ga naar inhoud

Grote executable


Aanbevolen berichten

Hi! Ik heb in C++ een standaard Windows applicatie gemaakt met DirectSound-ondersteuning. Er is geen andere code dan de code om een lege window te maken en om DirectSound in te stellen. Ik gebruik hierbij de header "dsound.h" en link met de DirectX-library. De executable die hieruit gecompileerd wordt is echter 725 kB groot! Waarom? Normaal komt zo'n programma niet boven de 50 kB...
Link naar reactie
Zoals SHARK al zei, als je in Debug mode compileert, is je executable sowieso groter door de debug informatie. Ook wordt je executable groter doordat je statisch linkt met Dsound.lib. Ik weet niet hoe het zit met de beschikbaarheid van statische/dynamische versies van die Dsound library, maar als je je executable zo klein mogelijk wilt houden, dan moet je dynamisch linken. Je moet dan wel de betreffende DLL van de gelinkte library bijvoegen bij je programma, anders start ie niet...
Link naar reactie
Ik heb net even het standaard DirectX-framework gecompileerd dat met Dev-C++ wordt meegeleverd: > 950 kB. Verder viel me op dat mijn main.o objectbestand ook al boven de 600 kB uitkomt, terwijl daar dus alleen maar een window in wordt gemaakt. En zelfs als het echt niet kleiner kan, hoe krijgt een compiler dan 725 kB uit een library van zo'n 4 kB en een header van 108 kB?
Link naar reactie
[quote:1d0c227a18="gerben"]Mogelijk linkt die library weer naar allerlei andere bestanden?[/quote:1d0c227a18] Hmmm, het is een standaard Microsoft library dus zou best kunnen. Ik heb alleen veel meer super compacte DirectX-programma's gezien dan de enorme bestanden die ik nu krijg. Maar ik ga sowieso eens in de header kijken wat er nog meer wordt gecompileerd...
Link naar reactie
Ik heb heel snel een testje gemaakt in Visual Studio 2005. Ik roep hier één functie uit dsound.lib aan (GetDeviceID), zodat hij i.e.g. door de linker meegelinkt wordt. En ik kom bij de release-build op 6 kb uit. Dus ik vermoed dat het ergens anders door komt. BTW: bij echt super-compacte dingen slopen ze er een hoop uit door zelfgemaakte libraries te gebruiken. Zelfs de standaard runtime-library wordt dan vaak vervangen door een kleinere variant.
Link naar reactie
Okay, er werd inderdaad debugging informatie geproduceerd, maar dat was niet echt van groot belang voor de bestandsgrootte. Bij het doorspitten van de instellingen bleek de instelling voor de machine waarvoor de code bestemd was echter niet ingesteld te zijn. Die heb ik op i386 gezet, en nu wordt dezelfde executable maar zo'n 20 kB. Dat is toch een verschil. :)
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...