[gtkmm] Problem mit gtkmm + cairomm: Kein Element create_cairo_context()



  • Hi,
    ich versuche ein Beispiel aus der gtkmm-Doku (http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/ch15s02.html zu kompilieren. Ich erhalte aber folgenden Fehler:

    myarea.cpp: In member function »virtual bool MyArea::on_expose_event(GdkEventExpose*)«:
    myarea.cpp:27: Fehler: »class Gdk::Window« hat kein Element namens »create_cairo_context«
    

    Woran kann das liegen?

    (Kompiliert mit : g++ main.cpp myarea.cpp myarea.h `pkg-config gtkmm-2.4 --cflags --libs`)

    Installiert habe ich:
    cairomm-1.4.2
    gtkmm-2.2.12
    cairo-1.4.10

    Andere Beispiele, die nur gtkmm nutzen, haben funktioniert.

    Gruss Reto



  • du verwendest gtkmm 2.2 aber willst mit den 2.4 flags compilieren? Das kann ja net gut gehen 😉

    `pkg-config gtkmm-2.4 --cflags --libs`

    Mein vorschlag daher => gtkmm update besorgen

    BR
    Vinzenz



  • Danke schon mal!

    gtkmm 2.4 ist installiert, allerdings liefert der Compiler immer noch den gleichen Fehler... Gibt es noch Anderes zu beachten?
    Kann ich irgendwie überprüfen ob die Installierten libs (gtk,gtkmm,cairo,cairomm) in Ordnung sind und ob sie auch tatsächlich verwendet werden?

    Gruss Reto



  • Reto schrieb:

    Danke schon mal!

    gtkmm 2.4 ist installiert, allerdings liefert der Compiler immer noch den gleichen Fehler... Gibt es noch Anderes zu beachten?
    Kann ich irgendwie überprüfen ob die Installierten libs (gtk,gtkmm,cairo,cairomm) in Ordnung sind und ob sie auch tatsächlich verwendet werden?

    Gruss Reto

    Welche Versionen von den diversen Libs hast du denn installiert. Bei mir sind alle aktuell und das Beispiel kompiliert anstandslos.



  • Hallo
    Installiert habe ich nun folgendes:

    cairo 1.4.10
    cairomm 1.4.2
    gtk+ 2.4.0
    gtkmm 2.4

    Kann es sein, dass ältere Bibliotheken gelinkt werden? Kann mir den Fehler sonst nicht erklären...

    Bin für jede Hilfe dankbar.

    Gruss Reto



  • Reto schrieb:

    Hallo
    Installiert habe ich nun folgendes:

    cairo 1.4.10
    cairomm 1.4.2
    gtk+ 2.4.0
    gtkmm 2.4

    Kann es sein, dass ältere Bibliotheken gelinkt werden? Kann mir den Fehler sonst nicht erklären...

    Gelinkt eher nicht, ist ja ein Compiler-Fehler.
    Gib mal

    pkg-config --modversion gtkmm-2.4
    

    ein. Da muss mindestens 2.9 stehen, vorher gab's die Funktion noch nicht.

    mfg.



  • Ok, langam geht's vorwärts.

    Version war 2.8.8

    Habe nun versucht eine neuere Version (2.10.10) zu installieren. Die wiederum ist aber selber von neueren Versionen von GTK u.s.w. abhängig.
    Beim updaten von GTK bekomme ich nun folgenden Fehler:

    checking for GLIB - version >= 2.12.0...
    *** 'pkg-config --modversion glib-2.0' returned 2.12.13, but GLIB (2.10.3)
    *** was found! If pkg-config was correct, then it is best
    *** to remove the old version of GLib. You may also be able to fix the error
    *** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing
    *** /etc/ld.so.conf. Make sure you have run ldconfig if that is
    *** required on your system.
    *** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH
    *** to point to the correct configuration files
    no
    configure: error:
    *** GLIB 2.12.0 or better is required. The latest version of
    *** GLIB is always available from ftp://ftp.gtk.org/pub/gtk/.
    reto@reto-laptop:~/Desktop/gtk+-2.10.9$
    

    glib habe ich auf Version 2.12.13 geupdatet, was pkg-config auch richtig zurückgibt, so wie ich das sehe. Allerdings stört wohl noch eine ältere Version.

    Ich habe schon versucht in die /etc/ld.so.conf den Pfad /usr/local/lib einzutragen, hat aber zu nichts geführt.

    Welchen Pfad müsste ich denn da allenfalls eintragen? Oder was kann ich sonst tun?

    Gruss odires

    PS: Die ältere Version kann ich nicht löschen, weil Synaptic da noch zahlreiche andere Pakete mitentfernen will.



  • Versuch mal folgendes:
    Erstelle die Datei "/etc/ld.so.conf.d/libglib-2.0.conf" und schreibe dort den Pfad zu der neuen glib rein (/usr/local/lib).

    Welche Distribution hast du eigentlich?

    edit: Oder das hier: "env LD_LIBRARY_PATH=/usr/lib:/usr/local/lib"



  • Schon wieder einen Schritt weiter:

    Nachdem ich die Vorschläge von joomoo (+ ldconfig) umgesetzt hatte, gings weiter... Nach einer Compilier- und Installierorgie (atk, pango ...) konnte ich die neuste Version des GTK+ schliesslich erfolgreich installieren.

    Allerdings gibts jetzt Probleme bei der Installation von gtkmm:
    - ./configure läuft ohne Fehler bis zum Ende durch
    - make bleibt an der folgenden Stelle mit einem Fehler stehen.

    /usr/local/lib/libgtk-x11-2.0.so: undefined reference to `g_bookmark_file_get_added'
    collect2: ld returned 1 exit status
    make[4]: *** [example] Fehler 1
    make[4]: Verlasse Verzeichnis '/home/reto/Desktop/gtkmm-2.10.10/examples/book/alignment'
    make[3]: *** [all-recursive] Fehler 1
    make[3]: Verlasse Verzeichnis '/home/reto/Desktop/gtkmm-2.10.10/examples/book'
    make[2]: *** [all-recursive] Fehler 1
    make[2]: Verlasse Verzeichnis '/home/reto/Desktop/gtkmm-2.10.10/examples'
    make[1]: *** [all-recursive] Fehler 1
    make[1]: Verlasse Verzeichnis '/home/reto/Desktop/gtkmm-2.10.10'
    make: *** [all] Fehler 2
    

    Ich kann damit leider wiederum nichts anfangen. Wisst ihr weiter?

    Gruss Reto

    PS: Einen lustigen Nebeneffekt hatte die Instalation des GTK allerdings: Mein Ubuntu Human Theme wurde durch ein anderes (hässlicheres) ausgetauscht. Hat nicht Priorität, aber falls jemand gerade weiss wie ich das wieder gerade biegen kann...

    Übrigens: Danke schon mal!



  • Er scheint noch die alte GLib-Version zu nehmen. Versuch mal env "LD_LIBRARY_PATH=/usr/lib:/usr/local/lib" einzugeben, weiß nicht ob das hilft.

    Welche Version von Ubuntu hast du? Ich würde nämlich einfach upgraden, da sparst du dir die Arbeit.



  • Hallo,
    dein Tipp hat leider nicht funktioniert. Habe jetzt von 6.06 auf 7.04 geupdatet und siehe da: funktioniert alles tiptop, ohne jegliche Probleme und Mühen. (Habe ein Update lange gescheut, da kein LTS, aber hat sich jetzt gelohnt).

    Vielen Dank für die Hilfe!

    Gruss Reto


Anmelden zum Antworten