Anzeige:
Ergebnis 1 bis 8 von 8

Thema: id3lib C, nicht C++

  1. #1
    Registrierter Benutzer Avatar von baron_huehnerho
    Registriert seit
    06.01.2002
    Ort
    Berlin
    Beiträge
    10

    id3lib C, nicht C++

    Hallo!

    Ich versuche mich gerade an C und will ein kleines Programm schreiben, was ein bischen mit id3-Tags rummacht. Ich dachte nun einfach daran die id3lib zu benutzen.
    Das Kurztutorial auf der Homepage sagt mir primär ich bräucht nur die id3/tag.h einzubinden, leider scheint das ein C++-Header zu sein... gcc spuckt Fehler ohne Ende aus.
    Ich wollte schon bei C bleiben (ich hasse OOP).
    Wie bekomme ich idtags dabei zu stande? (Laut deren Homepage soll ja auch C unterstützt sein?)

  2. #2
    Registrierter Benutzer
    Registriert seit
    04.05.2005
    Ort
    Dortmund
    Beiträge
    31
    Hab' keine Ahnung von der id3-lib - aber hast'e die Library beim kompilieren als Parameter mit angegeben? "gcc blabla -lid3lib" oder irgendwas ähnliches...

    Mfg, Lord Kefir

  3. #3
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    btw: C++ zu benutzen bedeutet nicht zwangsläufig OO zu benutzen...
    I haven't lost my mind - It's somewhere on a backup-disc

  4. #4
    Registrierter Benutzer Avatar von baron_huehnerho
    Registriert seit
    06.01.2002
    Ort
    Berlin
    Beiträge
    10

    Unhappy

    Ich habe keine Ahnung ob ich mich richtig ausgedrückt habe. id3lib schreibt auf der Projektseite nichts davon, dass ich beim kompilieren -lid3lib anfügen müsste. (Natürlich können die das als "selbstverständlich" deklarieren, k.A.) Leider ändert es nichts an der ausgabe. Wenn ich mir die id3/tag.h ansehe begrüßen mich Klassendefintionen:
    Code:
    // -*- C++ -*-
    //.........einige Zeilen zur Lizenz
    #ifndef _ID3LIB_TAG_H_
    #define _ID3LIB_TAG_H_
    
    #include <id3/id3lib_frame.h>
    #include <id3/field.h>
    #include <id3/utils.h>//for ID3_PATH_LENGTH
    
    class ID3_Reader;
    class ID3_Writer;
    class ID3_TagImpl;
    class ID3_Tag;
    
    class ID3_CPP_EXPORT ID3_Tag
    {
      ID3_TagImpl* _impl;
      char _tmp_filename[ID3_PATH_LENGTH];
    public:
    und so weiter. Also die Header, die ich einfügen soll sind ganz klar C++.

    Ich paste euch mal den Anfang von dem Compilerfehler:
    Code:
    baron@hlidskjalf ~/Arbeit/C $ gcc -o mp3 mp3.c -lid3lib 
    In file included from /usr/include/id3/tag.h:32,
                     from mp3.c:2:
    /usr/include/id3/id3lib_frame.h:33: error: Syntaxfehler before "ID3_Field"
    /usr/include/id3/id3lib_frame.h:34: error: Syntaxfehler before "ID3_FrameImpl"
    /usr/include/id3/id3lib_frame.h:35: error: Syntaxfehler before "ID3_Reader"
    Der gleiche Fehler kommt egal ob ich -lid3lib angebe oder nicht und ob ich es weiter vorne schreibe oder nicht.
    Ich denke ich benutze die falschen Header für C... nur wo sollten die sein? Ich hab schon mal /usr/include durgestöbert und finde nichts dergleichen...

  5. #5
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    da die Lib in C++ geschrieben ist, wie es aussieht, darfst Du natürlich auch nicht den gcc nehmen, sondern den g++.
    I haven't lost my mind - It's somewhere on a backup-disc

  6. #6
    Registrierter Benutzer Avatar von baron_huehnerho
    Registriert seit
    06.01.2002
    Ort
    Berlin
    Beiträge
    10
    Dann muss ich doch aber auch wieder C++ schreiben und nicht C. Ich denke wir drehen uns hier gerade leicht im Kreis.

    Mein Problem: Wie kann ich id3lib in C benutzen. Nach Aussagen auf der Projektseite sollte es funktionieren:
    Code:
    Multi-language
                  id3lib aspires to provide interfaces for multiple programming
                  languages, and currently fully supports both C and C++.  A COM
                  wrapper (id3com) is also supplied allowing VB, VBA, VBScript and
                  other COM-enabled languages to use the library.

  7. #7
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Vielleicht gibt es da andere Header, praktisch C Bindings
    taglib macht das AFAIK so.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  8. #8
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Dann muss ich doch aber auch wieder C++ schreiben und nicht C. Ich denke wir drehen uns hier gerade leicht im Kreis.
    Warum denn eigentlich nicht? Da ja schon die Bibliothek in C++ geschrieben ist, liegt deren Verwendung für dein Programm doch nahe. Zumal du den einen Grund, warum du C++ nicht benutzen möchtest, ja durch Verwendung der C-Bindings (wahrscheinlich) eh nicht aus dem Wege gehen kannst. Wenn die Id3lib C++ Implementierung/das C++ API Objekt-orientiert ist, dann wird sehr wahrscheinlich auch der C-Wrapper Objekt-orientiert sein. Nur halt in C.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •