(libxml++/ glibmm) libxml++ findet header der glibmm nicht- was nun?[geloest]



  • Hallo,

    in einem Programm habe ich mich dazu entschieden, libxml++ als xml Parserbibliothek einzusetzen. Diese wiederum refernziert auf ein Paar Header der glibmm Bibliothek. So weit kein Akt, sind alle auf meinem System vorhanden.

    Nun will ich ein Programm kompilieren, welches ich mit einer anderen Linuxversion mit exakt diesen Parametern fehlerfrei ans Laufen bekomme. Im Prinzip ist auch alles in Ordnung bis auf einen Fehler im Zusammenspiel von glib und libxml.

    Ich bekomme beim Kompilieren den Fehler:

    In Datei, eingefügt von /usr/include/libxml++-2.6/libxml++/exceptions/internal_error.h:25,
                        von /usr/include/libxml++-2.6/libxml++/libxml++.h:10,
                        von standalone.cpp:41:
    /usr/include/libxml++-2.6/libxml++/exceptions/exception.h:26:28: glibmm/ustring.h: Datei oder Verzeichnis nicht gefunden
    

    Ein Paar Folgefehler später und es geht wieder um einen nicht gefundenen Header für glib. Dann habe ich nachgesehen, ob es den Header auf meiner Maschine überhaupt gibt -gibt es, der liegt im Pfad

    /usr/include/glibmm-2.4/glibmm/ustring.h
    

    Wie krieg ich dem Mopped jetzt beigebracht, dass es diesen Header gibt?

    Meine Include Sektion sieht so aus:

    #include <iostream>
    #include <cstdlib>
    #include <string>
    #include <vector>
    #include <stdio.h>
    #include <curl/curl.h>
    #include <mysql/mysql.h>
    #include <libxml++/libxml++.h>
    

    und kompilieren to ich mit den Optionen:

    g++ -o NewFIle standalone.cpp -lcurl -lmysqlclient -I/usr/include/libxml++-2.6 -lxml++-2.6
    

    Was mach ich da am besten? Danke für Alles!



  • g++ -o NewFIle standalone.cpp -lcurl -lmysqlclient `pkg-config --libs --cflags libxml++-2.6` `pkg-config --libs --cflags glibmm-2.6`
    


  • Das scheint zu helfen, danke- aber WAS bedeutet das genau? Sowas hab' ich bisher noch nie gesehen...



  • pkg-config ist sehr praktisch, lies mal die Manpage dazu.
    Sollte an sich in jedem besseren GTK-Tutorial oä erklärt sein; mit "pkg-config --libs --cflags meintollespaket-2.4" spuckt es sämtliche Compileroptionen für Includepfade und Libraries aus, die von meintollespaket-2.4 benötigt werden.

    Dh. Du vermeidest zB die Eingabe hiervon (und das funktioniert normalerweise auch auf jedem System, auf dem glibmm in Version 2.4 installiert ist):

    sebastian@matt ~ % pkg-config --libs --cflags glibmm-2.4
    -I/usr/include/glibmm-2.4 -I/usr/lib/glibmm-2.4/include -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  -lglibmm-2.4 -lgobject-2.0 -lsigc-2.0 -lglib-2.0
    


  • Cool und nochmal Danke. Wenn ich das vorher gekannt hätte, würde ich vermutlich 2 Jahre länger leben... 😉


Anmelden zum Antworten