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!
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!