libxml und g++



  • Hallo.
    Ich moechte in einem C++ Programm die Libxml++ verwenden.

    #include <libxml++/libxml++.h>
    #include <iostream>
    
            int main (){
            std::cout << "hallo welt";
            return 0;
            }
    

    Wenn ich es mit dem Befehl
    g++ xml2.cc
    kompiliere erhalte ich folgende Meldung:
    xml2.cc:1:33: libxml++/libxml++.h: Datei oder Verzeichnis nicht gefunden

    Auf meine PC liegen ist libxml++ wie folgt installiert

    /usr/doc/libxml++-2.10.0
    /usr/local/lib/libxml++-2.6.a
    /usr/local/lib/pkgconfig/libxml++-2.6.pc
    /usr/local/lib/libxml++-2.6.so.2
    /usr/local/lib/libxml++-2.6.l
    /usr/local/lib/libxml++-2.6.so
    /usr/local/lib/libxml++-2.6.so.2.0.4
    /usr/local/share/doc/libxml++-2.6
    /usr/local/share/doc/libxml++-2.6/docs/reference/2.10/html/libxml++_8h.html
    /usr/local/include/libxml++-2.6
    /usr/local/include/libxml++-2.6/libxml++
    /usr/local/include/libxml++-2.6/libxml++/libxml++.h
    

    wenn ich mit folgenden Parametern versuche
    g++ -I /usr/local/include/libxml++-2.6/ xml2.cc

    kommt diese Meldung:

    In Datei, eingefügt von /usr/local/include/libxml++-2.6/libxml++/exceptions/internal_error.h:25,
                        von /usr/local/include/libxml++-2.6/libxml++/libxml++.h:10,
                        von xml2.cc:1:
    /usr/local/include/libxml++-2.6/libxml++/exceptions/exception.h:26:28: glibmm/ustring.h: Datei oder Verzeichnis nicht gefunden
    In file included from /usr/local/include/libxml++-2.6/libxml++/exceptions/internal_error.h:25,
                     from /usr/local/include/libxml++-2.6/libxml++/libxml++.h:10,
                     from xml2.cc:1:
    /usr/local/include/libxml++-2.6/libxml++/exceptions/exception.h:36: error: Syntaxfehler
        before `::' token
    /usr/local/include/libxml++-2.6/libxml++/exceptions/exception.h:44: error: Syntaxfehler
        before `::' token
    In Datei, eingefügt von /usr/local/include/libxml++-2.6/libxml++/libxml++.h:10,
                        von xml2.cc:1:
    /usr/local/include/libxml++-2.6/libxml++/exceptions/internal_error.h:28:28: glibmm/ustring.h: Datei oder Verzeichnis nicht gefunden
    In file included from /usr/local/include/libxml++-2.6/libxml++/libxml++.h:10,
                     from xml2.cc:1:
    /usr/local/include/libxml++-2.6/libxml++/exceptions/internal_error.h:35: error: Syntaxfehler
    ...
    ...
    

    Kann mir von euch bitte jemand weiterhelfen?
    danke
    lg
    Michi



  • Tipp mal folgendes ein:

    pkgtool -list--all | grep 'libxml*'
    

    Das müsste dann sowas à la libxml++-2.6 ausgeben, dann kompilierst du so:

    g++ -c xml2.cc $(pkg-config libxml++-2.6 --cflags --libs)
    


  • danke fuer die info GPC!

    hab zuerst pkg-config etwas aufraeumen mussen.
    schlussendlich erhiet ich jedoch mit pkg-config --list-all | grep libxml++*
    die Ausgabe
    libxml++-2.6 libxml++ - C++ wrapper for libxml

    pkg-config libxml++-2.6 --cflags --libs
    gibt folgendes aus:

    -I/usr/local/include/libxml++-2.6 -I/usr/local/lib/libxml++-2.6/include
    -I/usr/local/include/glibmm-2.4 -I/usr/local/lib/glibmm-2.4/include
    -I/usr/include/libxml2 -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include
    -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -L/usr/local/lib
    -lxml++-2.6 -lxml2 -lz -lm -lglibmm-2.4 -lgobject-2.0 -lsigc-2.0 -lglib-2.0
    

    wenn ich nun
    g++ -c xml2.cc $(pkg-config libxml++-2.6 --cflags --libs)
    ausfuehre erhalte ich

    g++: -lxml++-2.6: Eingabedateien des Binders unbenutzt, da keine Bindung geschieht
    g++: -lxml2: Eingabedateien des Binders unbenutzt, da keine Bindung geschieht
    g++: -lz: Eingabedateien des Binders unbenutzt, da keine Bindung geschieht
    g++: -lm: Eingabedateien des Binders unbenutzt, da keine Bindung geschieht
    g++: -lglibmm-2.4: Eingabedateien des Binders unbenutzt, da keine Bindung geschieht
    g++: -lgobject-2.0: Eingabedateien des Binders unbenutzt, da keine Bindung geschieht
    g++: -lsigc-2.0: Eingabedateien des Binders unbenutzt, da keine Bindung geschieht
    g++: -lglib-2.0: Eingabedateien des Binders unbenutzt, da keine Bindung geschieht
    


  • Ja, die Meldungen kriegst du weil du nichts gelinkt hast, sondern nur -c verwendet hast. Wenn du eine binary erstellst, müsste es klappen.



  • GPC schrieb:

    Ja, die Meldungen kriegst du weil du nichts gelinkt hast, sondern nur -c verwendet hast. Wenn du eine binary erstellst, müsste es klappen.

    funktioniert.
    danke!


Anmelden zum Antworten