Den Thu, 3 Aug 2006 21:13:45 +0200 skrev Doe:
> Jeg har følgende stump kode (tak til Bertel B. for koden). Jeg får afspillet
> MP3 filen "test.mp3" og jeg kompilere programmet vha. MinGW og denne
> kommando:
>
> g++ demo2.cpp -lvfw32 -o demo2.exe
>
> Er der en måde, at få linket MP3 filen direkte ind i EXE filen således, at
> man kun har én fil?
Det kan man sagtens. En mulighed er at lægge den ind som et
char-array. På linux kan det gøres sådan her:
echo 'unsigned char mp3[] = {' > mp3.h
hexdump -v -e '"\t" 8/1 "0x0%02x," "\n"' test.mp3 >> mp3.h
echo '};' >> mp3.h
Du har nok ikke lige de kommandoer til rådighed, men det må nok kunne
lade sig gøre at finde en måde at gøre det på under windows. Om ikke
andet kan man jo skrive et lille program
Men resultatet skulle
gerne komme til at se ud noget i retning af:
unsigned char mp3[] = {
0x000,0x000,0x000,0x000,0x0c4,0x000,0x084,0x0dd,
0x084,0x0c5,0x07c,0x036,0x084,0x0cd,0x084,0x0c7,
0x07c,0x061,0x07c,0x07d,0x07c,0x07d,0x07c,0x03c,
0x084,0x0b2,0x07c,0x079,0x07c,0x038,0x084,0x0b2,
...
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,
};
Det bliver en enorm fil, men det kan du jo hurtigt regne ud, når
hver byte fylder så meget (hov, jeg kan se der er et ekstra 0
"0x0..", det behøver du ikke have med. Det er noget jeg har taget
fra et program jeg skrev for mange år siden). I mit tilfælde er
en 36KB wav-fil blevet til 228KB C-kode. Men når det har været
igennem compileren, skulle det gerne komme ned på den oprindelige
størrelse igen.
Et helt andet problem er så hvorvidt du kan afspille MP3-filer
direkte fra et char-array i stedet for en fil.
Mvh
Kent
--
"So there I was surrounded by all these scary creatures
They were even scarier than what Microsoft call features"
- C64Mafia: Forbidden Forest (Don't Go Walking Slow).