Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

Grote executable

davykager
9 antwoorden
  • 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…
  • Hmmm… zou kunnen. Weet je zeker dat je hem als "Release" hebt gecompileerd en niet als "Debug"? Gebruik je misschien nog andere libraries?
  • Link je statisch, of dynamisch (DLL)?
  • Ik link statisch met Dsound.lib die geleverd wordt met de DirectX SDK. Ik gebruik Dev-C++ (ben nog een beginner enzo) en heb verder niets gewijzigd aan de compiler/linker instellingen.
  • 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…
  • 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?
  • Mogelijk linkt die library weer naar allerlei andere bestanden?
  • [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…
  • 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.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.