anoniem Geplaatst: 12 mei 2007 Delen Geplaatst: 12 mei 2007 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... Quote Link naar reactie
anoniem Geplaatst: 13 mei 2007 Auteur Delen Geplaatst: 13 mei 2007 Hmmm... zou kunnen. Weet je zeker dat je hem als "Release" hebt gecompileerd en niet als "Debug"? Gebruik je misschien nog andere libraries? Quote Link naar reactie
anoniem Geplaatst: 13 mei 2007 Auteur Delen Geplaatst: 13 mei 2007 Link je statisch, of dynamisch (DLL)? Quote Link naar reactie
anoniem Geplaatst: 13 mei 2007 Auteur Delen Geplaatst: 13 mei 2007 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. Quote Link naar reactie
anoniem Geplaatst: 13 mei 2007 Auteur Delen Geplaatst: 13 mei 2007 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... Quote Link naar reactie
anoniem Geplaatst: 13 mei 2007 Auteur Delen Geplaatst: 13 mei 2007 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? Quote Link naar reactie
anoniem Geplaatst: 13 mei 2007 Auteur Delen Geplaatst: 13 mei 2007 Mogelijk linkt die library weer naar allerlei andere bestanden? Quote Link naar reactie
anoniem Geplaatst: 13 mei 2007 Auteur Delen Geplaatst: 13 mei 2007 [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... Quote Link naar reactie
anoniem Geplaatst: 13 mei 2007 Auteur Delen Geplaatst: 13 mei 2007 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. Quote Link naar reactie
anoniem Geplaatst: 13 mei 2007 Auteur Delen Geplaatst: 13 mei 2007 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. :) Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen