PDA

View Full Version : niubbo... Dev-c++ e id3lib...


skazzo
13-11-2003, 15:04
Ciao a tutti!
mi sono cimentato nella programmazione in c++, e grazie a Dev-c++ e wxWindows costruire l'interfaccia grafica è stato abbastanza semplice...

Il problema nasce ora che devo aggiungere funzionalità come la lettura delle tag Id3 e degli OggVorbis Comments...
come faccio a includere in mamiera corretta le librerie?
finora, usando solo wxWindows, mi sono servito dei devpacks, per installare le librerie, e ora sono nella c@cc@!

dunque, ho provato a fare questo:
ho scaricato id3lib, versione sorgente e i binari per windows.
ho posizionato i binari nella cartella "lib", mentre i file della cartella "include" dei sorgenti l'ho copiata pari pari nella cartella "include" di dev c++, senza avere bisogno di linkare tali file nelle proprietà del progetto, e per averli disponibili per altre applicazioni.
inoltre, ho copiato la cartella "src" dei sorgenti nella cartella del mio progetto e rinominata "id3", per avere le funzioni di base (misc_support.cpp, contenente le funzioni per leggere le tag senza dover scrivere kilometri di roba).
fatto questo, ho aggiunto le seguenti righe nel file audiorun.h (praticamente il mio main.h):

#define ID3LIB_LINKOPTION 1
#include <id3/tag.h>
#include "id3/misc_support.h"

oltre agli altre include per wxwindows...
ed ecco la funzione incriminata:

wxString
AppFrame::leggiTitolo(wxString percorso)
{
char *titolo;
wxString tmp;
if (percorso.Right(4) == ".mp3")
{
//legge tag MP3
//provo a leggere ID3v2
ID3_Tag tagBrano(percorso);
titolo = ID3_GetTitle(&tagBrano);
if (NULL != &titolo)
{
//trovata ID3v2, restituisco il titolo
return titolo;
}
else
{
//ID3v2 non trovata, provo con ID3v1
tagBrano.Link("song.mp3", ID3TT_ID3V1);
titolo = ID3_GetTitle(&tagBrano);
if (NULL != &titolo)
{
//trovata ID3v1, restituisco il titolo
return titolo;
}
else
{
//nessuna tag, uso il nome del file senza estensione
tmp = percorso.AfterLast(char(92));
tmp.Remove(tmp.Len() - 4);
return tmp;
}
}
}
else if (percorso.Right(4) == ".ogg")
{
//legge commento OggVorbis
tmp = percorso.AfterLast(char(92));
tmp.Remove(tmp.Len() - 4);
return tmp;
}
}

ed ecco gli errori:

[Linker error] undefined reference to `ID3_Tag::ID3_Tag(char const *)'
[Linker error] undefined reference to `ID3_GetTitle(ID3_Tag const *)'
[Linker error] undefined reference to `ID3_Tag::~ID3_Tag(void)'
[Linker error] undefined reference to `ID3_Tag::Link(char const *, unsigned short)'
[Linker error] undefined reference to `ID3_GetTitle(ID3_Tag const *)'
[Linker error] undefined reference to `ID3_Tag::~ID3_Tag(void)'
[Linker error] undefined reference to `ID3_Tag::~ID3_Tag(void)'
[Linker error] undefined reference to `ID3_Tag::~ID3_Tag(void)'
C:\Andrea\Mio\Cpp\AudioRun\Makefile.win [Build Error] [AudioRun.exe] Error 1


che ho sbagliato?
è problema di codice, di installazione della libreria o che altro?
non è che magari esiste un devpack delle id3lib????
grazie per l'aiutone!!!!

ciao a tutti!

cionci
13-11-2003, 18:14
Nella libreria dovresti aver trovato anche dei file con estensione .lib...
Questi devono essere linkati al tuo eseguibile:

Project -> Project Options -> Parameters -> Add library or object

e ci aggiungi i .lib che ti servono...

Potrebbe nascere anche un problema sulla compatibilità del .lib con il compilatore MinGW...in tal caso dovresti ricompilare il sorgente della libreria e generare il .a (quivalente del .lib per MinGW)...

skazzo
14-11-2003, 14:54
grazie!
aggiungendo la libreria per gli ogg ho rilevato lo stesso problema, e grazie al tuo aiuto l'ho risolto...
ma l'id3lib ancora non funziona, l'errore è sempre quello....provvederò a ricompilare la libreria... se trovo tutto il necessario... sto facendo un po' di casino con 'sti file!

ciao e grazie!

skazzo
17-11-2003, 10:41
help...
non riesco a capire come compilare la libreria...
posso creare un nuovo progetto con dev-c++ o è meglio che uso il make da riga di comando? se sì, mi dai (date) le direttive? con tutti sti switch ci capisco poco o niente...

ciao e grazie mille!

skazzo
19-11-2003, 09:52
qualcuno sa darmi un riferimento per la guida del mingw o sa spiegarmi come faccio a ricompilare la libreria?
l'errore persiste...

ah, e magari conoscete un metodo migliore per leggere i commenti dei file ogg usando la libreria vorbisfile? quest'ltima pretende ch eil file sia già aperto e messo in stdin, ma io ho solo bisogno di leggere i commenti, per ora...
ciao!

cionci
19-11-2003, 13:50
Magari se ci dai il link al sito della libreria da ricompilare ;)

skazzo
19-11-2003, 14:15
Originariamente inviato da cionci
Magari se ci dai il link al sito della libreria da ricompilare ;)

id3lib.sourceforge.net

credevo che conoscessi id3lib... sorry!

ciao e grazie!