kompilieren -> vorbis+theora Fehlermeldungen

Dein Thema passt einfach in kein Forum? Dann probiers mal hier.
Antworten
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

kompilieren -> vorbis+theora Fehlermeldungen

Beitrag von listeman »

Hallo Leutz,

In meinem kleinem Programm (ne Oberfläche für Streamripper+MPlayer) versuche ich mit dem Shoutcast-Server zu verbinden, um die Liste der Radiostationen zu bekommen. Dabei bin ich auf die Bibliothek "libshout" gestoßen, die das sehr vereinfachen würde. Habe sie also installiert und "shout/shout.h" eingebunden und auch in der .pro-Datei folgende Zeile ergänzt:

Code: Alles auswählen

LIBS += /usr/lib/libshout.a
Beim kompilieren gab er mir ca. 75 "undefined references" die alle mit ogg, spees, vorbis und theora in Verbindung stehen. Nachdem ich die LIBS-Zeile um libogg.a und libspeex.a ergänzt habe, bekomme ich zwar weniger Fehlermeldungen, aber trotz allem noch folgende:

Code: Alles auswählen

/usr/lib/libshout.a(vorbis.o): In function `free_vorbis_data':
(.text+0xe): undefined reference to `vorbis_info_clear'
/usr/lib/libshout.a(vorbis.o): In function `free_vorbis_data':
(.text+0x19): undefined reference to `vorbis_comment_clear'
/usr/lib/libshout.a(vorbis.o): In function `_shout_open_vorbis':
(.text+0x68): undefined reference to `vorbis_info_init'
/usr/lib/libshout.a(vorbis.o): In function `_shout_open_vorbis':
(.text+0x70): undefined reference to `vorbis_comment_init'
/usr/lib/libshout.a(vorbis.o): In function `_shout_open_vorbis':
(.text+0x8f): undefined reference to `vorbis_synthesis_headerin'
/usr/lib/libshout.a(vorbis.o): In function `read_vorbis_page':
(.text+0x11f): undefined reference to `vorbis_synthesis_headerin'
/usr/lib/libshout.a(vorbis.o): In function `read_vorbis_page':
(.text+0x184): undefined reference to `vorbis_packet_blocksize'
/usr/lib/libshout.a(theora.o): In function `free_theora_data':
(.text+0xe): undefined reference to `theora_info_clear'
/usr/lib/libshout.a(theora.o): In function `free_theora_data':
(.text+0x19): undefined reference to `theora_comment_clear'
/usr/lib/libshout.a(theora.o): In function `_shout_open_theora':
(.text+0x68): undefined reference to `theora_info_init'
/usr/lib/libshout.a(theora.o): In function `_shout_open_theora':
(.text+0x70): undefined reference to `theora_comment_init'
/usr/lib/libshout.a(theora.o): In function `_shout_open_theora':
(.text+0x8f): undefined reference to `theora_decode_header'
/usr/lib/libshout.a(theora.o): In function `read_theora_page':
(.text+0x137): undefined reference to `theora_decode_header'
libtheora und libvorbis sind installiert. Natürlich habe ich auch schon google befragt und bin darauf gestoßen, dass es evtl. manchmal an ffmpeg liegt, das ist jedoch installiert.

Mein OS ist Arch Linux. Wäre echt super, wenn mir jemand helfen könnte, da ich moment nicht mehr weiterweiß :)

Danke!!
listeman
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Sieht so aus als bräuchte libshout auch libtheora
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

Beitrag von listeman »

Hm, das hab ich mir auch schon gedacht, jedoch bin ich überfragt wie ich libtheora einbinden kann.
Die Datei "/usr/lib/libtheora.a" existiert nicht und auch ein "#include <theora/theora.h>" in der mainwindow.h bringt keine Änderung...
Irgendeine Idee? libtheora ist natürlich installiert.


PS: Sorry, das ich das das falsche Forum gewählt hab :)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Was sollte ein Header bringen? Du musst schon gegen the theora-lib linken. Welche das ist, wie die heisst etc weiß ich nicht.
Warum linkst du eigentlich gegen die statische libshout?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

Beitrag von listeman »

Hm, das ist eine gute Frage.... wenn ich nicht gegen libshout linke, dann kann ich auch libogg und libspeex weglassen, danach frägt er dann nicht mehr :)

Doch nun stehe ich vor dem nächsten Problem. Ich kann partout nirgends den benötigten namespace für die libshout-Funktionen finden. Dabei bringt die Bibliothek sogar eine Beispiel-Datei (in C) mit, jedoch werden darin die Funktionen "einfach verwendet", was bei einem kompilieren der Beispiel-Datei (per gcc) zu denselben "undefined reference"-Fehlermeldungen führt.
Und auch die online-Dokumentation für libshout (http://www.aelius.com/njh/libshout-doc/libshout.html) verwendet die Funktionen einfach, erwähnt nichts bezüglich eines evtl. benötigten namespaces...

Wäre echt super, wenn mir jemand auch noch dabei helfen könnte :D

Viele Grüße
listeman
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Dann musst du halt die libs selber mit dazu linken...

Code: Alles auswählen

gcc beispieldatei.c -o beispiel -logg -lspeex
wenn nach libogg und libspeex verlangt wird...
Oder halt andere libs, die die symbole enthalten.
Aber dazu sollte eigentlich die Doku die nötigen Infos enthalten.
Hast du denn auch keine libshout.so? Das sollte eigentlich alles andere überflüssig machen.
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

Beitrag von listeman »

Sorry, das ich erst jetzt antworte...

Ein "LIBS += /usr/lib/libshout.so" brachte die Lösung... jedoch bin ich inzwischen vom gebrauch von libshout abgerückt. Warum nen wrapper benutzen wenn es eine einfache API gibt, die die gewünschten Ergebnisse in schönen xml präsentiert? :)

Danke und Grüße
listeman
Antworten