GTKmm Erstes Programm. Viele Quelltextfehler



  • Nabend,

    für ein Projekt benötige ich GTKmm. Nun wollte ich mich einarbeiten und hab mit

    sudo apt-get install libgtkmm-3*
    

    erstmal alle Pakete auf Ubuntu 12.04 installiert, was ohne Fehler klappte.
    Das erste Programm habe ich laut folgendem Tutorial geschrieben und unter

    app.cpp
    

    gespeichert: http://developer.gnome.org/gtkmm-tutorial/unstable/sec-basics-simple-example.html.en. Tippfehler ausgeschlossen, da ich den Code einfach per Copy&Paste kopiert habe.
    Nun kompiliere ich also mit

    g++ app.cpp `pkg-config --libs --cflags gtkmm-3.0` -o app
    

    .
    Als Output zeigt mir die Konsole dann folgendes:

    In file included from /usr/include/gtk-3.0/gdk/gdk.h:31:0,
                     from /usr/include/gdkmm-3.0/gdkmm/color.h:36,
                     from /usr/include/gdkmm-3.0/gdkmm/dragcontext.h:33,
                     from /usr/include/gtkmm-3.0/gtkmm.h:90,
                     from app.cpp:3:
    /usr/include/gtk-3.0/gdk/gdkversionmacros.h:137:6: Fehler: fehlender binärer Operator vor Token »(«
    /usr/include/gtk-3.0/gdk/gdkversionmacros.h:145:5: Fehler: fehlender binärer Operator vor Token »(«
    /usr/include/gtk-3.0/gdk/gdkversionmacros.h:148:5: Fehler: fehlender binärer Operator vor Token »(«
    /usr/include/gtk-3.0/gdk/gdkversionmacros.h:154:5: Fehler: fehlender binärer Operator vor Token »(«
    /usr/include/gtk-3.0/gdk/gdkversionmacros.h:162:5: Fehler: fehlender binärer Operator vor Token »(«
    /usr/include/gtk-3.0/gdk/gdkversionmacros.h:168:5: Fehler: fehlender binärer Operator vor Token »(«
    /usr/include/gtk-3.0/gdk/gdkversionmacros.h:176:5: Fehler: fehlender binärer Operator vor Token »(«
    /usr/include/gtk-3.0/gdk/gdkversionmacros.h:182:5: Fehler: fehlender binärer Operator vor Token »(«
    /usr/include/gtk-3.0/gdk/gdkversionmacros.h:190:5: Fehler: fehlender binärer Operator vor Token »(«
    In file included from /usr/include/glibmm-2.4/glibmm.h:89:0,
                     from /usr/include/gtkmm-3.0/gtkmm.h:87,
                     from app.cpp:3:
    /usr/include/glibmm-2.4/glibmm/threads.h:209:10: Fehler: Feld »gobject_« hat unvollständigen Typen
    /usr/include/glibmm-2.4/glibmm/threads.h: In Elementfunktion »GMutex* Glib::Threads::Mutex::gobj()«:
    /usr/include/glibmm-2.4/glibmm/threads.h:206:28: Fehler: »gobject_« wurde in diesem Gültigkeitsbereich nicht definiert
    /usr/include/glibmm-2.4/glibmm/threads.h: Im globalen Gültigkeitsbereich:
    /usr/include/glibmm-2.4/glibmm/threads.h:264:3: Fehler: »GRecMutex« bezeichnet keinen Typ
    /usr/include/glibmm-2.4/glibmm/threads.h:273:3: Fehler: »GRecMutex« bezeichnet keinen Typ
    /usr/include/glibmm-2.4/glibmm/threads.h:320:3: Fehler: »GRWLock« bezeichnet keinen Typ
    /usr/include/glibmm-2.4/glibmm/threads.h:329:3: Fehler: »GRWLock« bezeichnet keinen Typ
    /usr/include/glibmm-2.4/glibmm/threads.h:464:9: Fehler: Feld »gobject_« hat unvollständigen Typen
    /usr/include/glibmm-2.4/glibmm/threads.h: In Elementfunktion »GCond* Glib::Threads::Cond::gobj()«:
    /usr/include/glibmm-2.4/glibmm/threads.h:461:27: Fehler: »gobject_« wurde in diesem Gültigkeitsbereich nicht definiert
    /usr/include/glibmm-2.4/glibmm/threads.h: Im globalen Gültigkeitsbereich:
    /usr/include/glibmm-2.4/glibmm/threads.h:517:12: Fehler: Feld »gobject_« hat unvollständigen Typen
    /usr/include/glibmm-2.4/glibmm/threads.h: In Elementfunktion »GPrivate* Glib::Threads::Private<T>::gobj()«:
    /usr/include/glibmm-2.4/glibmm/threads.h:514:29: Fehler: »gobject_« wurde in diesem Gültigkeitsbereich nicht definiert
    /usr/include/glibmm-2.4/glibmm/threads.h: In Konstruktor »Glib::Threads::Private<T>::Private(Glib::Threads::Private<T>::DestructorFunc)«:
    /usr/include/glibmm-2.4/glibmm/threads.h:793:55: Fehler: es gibt keine Argumente für »G_PRIVATE_INIT«, die von einem Templateparameter abhängen, weshalb eine Deklaration von »G_PRIVATE_INIT« verfügbar sein muss [-fpermissive]
    /usr/include/glibmm-2.4/glibmm/threads.h:793:55: Anmerkung: (mit »-fpermissive« wird G++ den Code akzeptieren, aber die Verwendung eines nicht deklarierten Namens ist veraltet)
    /usr/include/glibmm-2.4/glibmm/threads.h:794:3: Fehler: »gobject_« wurde in diesem Gültigkeitsbereich nicht definiert
    /usr/include/glibmm-2.4/glibmm/threads.h: In Elementfunktion »T* Glib::Threads::Private<T>::get()«:
    /usr/include/glibmm-2.4/glibmm/threads.h:800:26: Fehler: »gobject_« wurde in diesem Gültigkeitsbereich nicht definiert
    /usr/include/glibmm-2.4/glibmm/threads.h: In Elementfunktion »void Glib::Threads::Private<T>::set(T*)«:
    /usr/include/glibmm-2.4/glibmm/threads.h:806:3: Fehler: »gobject_« wurde in diesem Gültigkeitsbereich nicht definiert
    /usr/include/glibmm-2.4/glibmm/threads.h: In Elementfunktion »void Glib::Threads::Private<T>::replace(T*)«:
    /usr/include/glibmm-2.4/glibmm/threads.h:812:22: Fehler: »gobject_« wurde in diesem Gültigkeitsbereich nicht definiert
    In file included from /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h:35:0,
                     from /usr/include/gtk-3.0/gdk/gdkpixbuf.h:34,
                     from /usr/include/gtk-3.0/gdk/gdkcairo.h:28,
                     from /usr/include/gtk-3.0/gdk/gdk.h:33,
                     from /usr/include/gdkmm-3.0/gdkmm/color.h:36,
                     from /usr/include/gdkmm-3.0/gdkmm/dragcontext.h:33,
                     from /usr/include/gtkmm-3.0/gtkmm.h:90,
                     from app.cpp:3:
    /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h: Im globalen Gültigkeitsbereich:
    /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h:240:17: Fehler: expected constructor, destructor, or type conversion before »(« token
    /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h:242:17: Fehler: expected constructor, destructor, or type conversion before »(« token
    In file included from /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h:37:0,
                     from /usr/include/gtk-3.0/gdk/gdkpixbuf.h:34,
                     from /usr/include/gtk-3.0/gdk/gdkcairo.h:28,
                     from /usr/include/gtk-3.0/gdk/gdk.h:33,
                     from /usr/include/gdkmm-3.0/gdkmm/color.h:36,
                     from /usr/include/gdkmm-3.0/gdkmm/dragcontext.h:33,
                     from /usr/include/gtkmm-3.0/gtkmm.h:90,
                     from app.cpp:3:
    /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h:77:17: Fehler: expected constructor, destructor, or type conversion before »(« token
    /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h:79:17: Fehler: expected constructor, destructor, or type conversion before »(« token
    In file included from /usr/include/atk-1.0/atk/atk.h:25:0,
                     from /usr/include/gtk-3.0/gtk/gtkwidget.h:36,
                     from /usr/include/gtk-3.0/gtk/gtkapplication.h:27,
                     from /usr/include/gtk-3.0/gtk/gtkwindow.h:33,
                     from /usr/include/gtk-3.0/gtk/gtkdialog.h:33,
                     from /usr/include/gtk-3.0/gtk/gtkaboutdialog.h:30,
                     from /usr/include/gtk-3.0/gtk/gtk.h:31,
                     from /usr/include/gtkmm-3.0/gtkmm/enums.h:32,
                     from /usr/include/gtkmm-3.0/gtkmm/widget.h:48,
                     from /usr/include/gtkmm-3.0/gtkmm/container.h:31,
                     from /usr/include/gtkmm-3.0/gtkmm/bin.h:31,
                     from /usr/include/gtkmm-3.0/gtkmm/window.h:34,
                     from /usr/include/gtkmm-3.0/gtkmm/dialog.h:33,
                     from /usr/include/gtkmm-3.0/gtkmm/aboutdialog.h:33,
                     from /usr/include/gtkmm-3.0/gtkmm.h:96,
                     from app.cpp:3:
    /usr/include/atk-1.0/atk/atkobject.h:573:17: Fehler: expected constructor, destructor, or type conversion before »(« token
    /usr/include/atk-1.0/atk/atkobject.h:575:17: Fehler: expected constructor, destructor, or type conversion before »(« token
    In file included from /usr/include/atk-1.0/atk/atk.h:31:0,
                     from /usr/include/gtk-3.0/gtk/gtkwidget.h:36,
                     from /usr/include/gtk-3.0/gtk/gtkapplication.h:27,
                     from /usr/include/gtk-3.0/gtk/gtkwindow.h:33,
                     from /usr/include/gtk-3.0/gtk/gtkdialog.h:33,
                     from /usr/include/gtk-3.0/gtk/gtkaboutdialog.h:30,
                     from /usr/include/gtk-3.0/gtk/gtk.h:31,
                     from /usr/include/gtkmm-3.0/gtkmm/enums.h:32,
                     from /usr/include/gtkmm-3.0/gtkmm/widget.h:48,
                     from /usr/include/gtkmm-3.0/gtkmm/container.h:31,
                     from /usr/include/gtkmm-3.0/gtkmm/bin.h:31,
                     from /usr/include/gtkmm-3.0/gtkmm/window.h:34,
                     from /usr/include/gtkmm-3.0/gtkmm/dialog.h:33,
                     from /usr/include/gtkmm-3.0/gtkmm/aboutdialog.h:33,
                     from /usr/include/gtkmm-3.0/gtkmm.h:96,
                     from app.cpp:3:
    /usr/include/atk-1.0/atk/atkhyperlink.h:101:1: Fehler: »G_DEPRECATED« bezeichnet keinen Typ
    In file included from /usr/include/gtk-3.0/gtk/gtk.h:58:0,
                     from /usr/include/gtkmm-3.0/gtkmm/enums.h:32,
                     from /usr/include/gtkmm-3.0/gtkmm/widget.h:48,
                     from /usr/include/gtkmm-3.0/gtkmm/container.h:31,
                     from /usr/include/gtkmm-3.0/gtkmm/bin.h:31,
                     from /usr/include/gtkmm-3.0/gtkmm/window.h:34,
                     from /usr/include/gtkmm-3.0/gtkmm/dialog.h:33,
                     from /usr/include/gtkmm-3.0/gtkmm/aboutdialog.h:33,
                     from /usr/include/gtkmm-3.0/gtkmm.h:96,
                     from app.cpp:3:
    /usr/include/gtk-3.0/gtk/gtkbutton.h:83:1: Fehler: »G_DEPRECATED« bezeichnet keinen Typ
    /usr/include/gtk-3.0/gtk/gtkbutton.h:85:1: Fehler: »G_DEPRECATED« bezeichnet keinen Typ
    /usr/include/gtk-3.0/gtk/gtkbutton.h:87:1: Fehler: »G_DEPRECATED« bezeichnet keinen Typ
    /usr/include/gtk-3.0/gtk/gtkbutton.h:89:1: Fehler: »G_DEPRECATED« bezeichnet keinen Typ
    

    Wobei der Befehls-Abschnitt

    pkg-config --libs --cflags gtkmm-3.0
    

    folgendes ausspuckt:

    -pthread -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include/pango-1.0 -I/usr/local/include/gio-unix-2.0/ -I/usr/include/atkmm-1.6 -I/usr/include/giomm-2.4 -I/usr/lib/i386-linux-gnu/giomm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/lib/i386-linux-gnu/pangomm-1.4/include -I/usr/include/gtk-3.0 -I/usr/include/cairomm-1.0 -I/usr/lib/i386-linux-gnu/cairomm-1.0/include -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gtk-3.0/unix-print -I/usr/include/atk-1.0 -I/usr/include/glibmm-2.4 -I/usr/lib/i386-linux-gnu/glibmm-2.4/include -I/usr/include/sigc++-2.0 -I/usr/lib/i386-linux-gnu/sigc++-2.0/include -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gtkmm-3.0 -I/usr/lib/gtkmm-3.0/include -I/usr/include/gdkmm-3.0 -I/usr/lib/gdkmm-3.0/include  -pthread -L/usr/local/lib -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 -lpangomm-1.4 -lgtk-3 -lglibmm-2.4 -lcairomm-1.0 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lgmodule-2.0 -lcairo -lsigc-2.0 -lgobject-2.0 -lgthread-2.0 -lrt -lglib-2.0
    

    FRAGE: Was ist da falsch? Installiert habe ich das Ganze mit http://developer.gnome.org/gtkmm-tutorial/unstable/sec-install-unix-and-linux.html.en Abschnitt 2.2.1.

    Mit freundlichen Grüßen
    Christoph



  • Wenn ich Deine Fehlermeldungen so betrachte scheint da was zu fehlen....
    Ich arbeite eigentlich mit GTK+ und C und habe mir spasseshalber die gtkmm Files istalliert. Das waren:

    libgtkmm-3.0-dev
    libgtkmm-3.0-1

    Wenn Dein Command mit dem "*" bei apt-get keinen Fehler anzeigte, muss noch lange nicht alles richtig installiert sein.

    Bei mir jedenfalls konnte ich Dein Programm fehlerfrei umwandeln:

    #include <gtkmm.h>
    
    int main(int argc, char *argv[])
    {
      Glib::RefPtr<Gtk::Application> app =
        Gtk::Application::create(argc, argv,
          "org.gtkmm.examples.base");
    
      Gtk::ApplicationWindow window;
    
      return app->run(window);
    }
    

    Lustigerweise lies sich das Pgm nicht ausführen, da sich ein ekelhafter Fehler eingeschlichen hat:

    statt
    Gtk::ApplicationWindow window;
    muss es 
    Gtk::Window window;
    

    heissen..... dann funzt es 🙂



  • ich hab das mit den Paketen extra nochmal per

    sudo apt-get install libgtkmm-3.0-1
    sudo apt-get install libgtkmm-3.0-dev
    

    probiert. Es sind aber beide schon installiert gewesen und auf dem aktuellen Stand.

    Ich hab mir die erste Fehlerstelle mal angeguckt. Dessen Beschreibung lautete ja:

    In file included from /usr/include/gtk-3.0/gdk/gdk.h:31:0,
                     from /usr/include/gdkmm-3.0/gdkmm/color.h:36,
                     from /usr/include/gdkmm-3.0/gdkmm/dragcontext.h:33,
                     from /usr/include/gtkmm-3.0/gtkmm.h:90,
                     from app.cpp:3:
    /usr/include/gtk-3.0/gdk/gdkversionmacros.h:137:6: Fehler: fehlender binärer Operator vor Token »(«
    

    In der H-Datei steht nun folgendes dort. Die Zeile 137 habe ich markiert(natürlich nicht im Code selbst sondern nur hier zum Zeigen):

    /**
     * GDK_VERSION_MAX_ALLOWED:
     *
     * A macro that should be defined by the user prior to including
     * the gdk.h header.
     * The definition should be one of the predefined GDK version
     * macros: %GDK_VERSION_3_0, %GDK_VERSION_3_2,...
     *
     * This macro defines the upper bound for the GDK API to use.
     *
     * If a function has been introduced in a newer version of GDK,
     * it is possible to use this symbol to get compiler warnings when
     * trying to use that function.
     *
     * Since: 3.4
     */
    #ifndef GDK_VERSION_MAX_ALLOWED
    # if GDK_VERSION_MIN_REQUIRED > GDK_VERSION_PREV_STABLE         ////// ZEILE 137
    #  define GDK_VERSION_MAX_ALLOWED      GDK_VERSION_MIN_REQUIRED
    # else
    #  define GDK_VERSION_MAX_ALLOWED      GDK_VERSION_CUR_STABLE
    # endif
    #endif
    

    Nun habe ich mal Präprozessor gespielt. Nachdem ich fertig war, steht dann folgendes dort:

    #ifndef GDK_VERSION_MAX_ALLOWED
    # if (((((3)) << 16 | ((4) - 2) << 8))) > ((((3)) << 16 | ((4) - 2) << 8))     ////// ZEILE 137
    #  define GDK_VERSION_MAX_ALLOWED      (((((3)) << 16 | ((4) - 2) << 8)))
    # else
    #  define GDK_VERSION_MAX_ALLOWED      ((((3)) << 16 | ((4)) << 8))
    # endif
    #endif
    

    ich frag mich nur, was daran falsch sein soll. Spalte 6(laut Fehlermeldung) ist die erste Klammer. Wo fehlt denn da ein binärer Operator? Für mich ist das syntaktisch korrekt. Und gemacht habe ich auch nichts anderes als pures Ersetzen. Wie der Präprozessor eben. Dieses if-Konstrukt habe ich auch mal als Code ausgeführt(Dateiname: bla.cpp):

    #include <iostream>
    
    int main( )
    {
    	if( (((((3)) << 16 | ((4) - 2) << 8))) > ((((3)) << 16 | ((4) - 2) << 8)) ) {
    		std::cout << "Klappt." << std::endl;
    	}
    	else {
    		std::cout << "Klappt nicht." << std::endl;
    	}
    	return 0;
    }
    

    Kompiliert mit g++ -Wall -pedantic bla.cpp -o bla ergibt das keine Fehler oder Warnungen.

    Falls der Präprozessor wirklich noch andere Dinge machen würde, hab ich mal die benötigten Defines zusammengestellt(Kommentare gelöscht). Folgende Datei(bla.cpp) hatte sich beim Befehl g++ -Wall -pedantic bla.cpp -o bla ebenfalls ohne Fehler und Warnungen kompilieren lassen:

    #define G_ENCODE_VERSION(major,minor)   ((major) << 16 | (minor) << 8)
    
    #define GDK_MAJOR_VERSION (3)
    #define GDK_MINOR_VERSION (4)
    #define GDK_MICRO_VERSION (2)
    
    #if (GDK_MINOR_VERSION % 2)
    #define GDK_VERSION_CUR_STABLE         (G_ENCODE_VERSION (GDK_MAJOR_VERSION, GDK_MINOR_VERSION + 1))
    #else
    #define GDK_VERSION_CUR_STABLE         (G_ENCODE_VERSION (GDK_MAJOR_VERSION, GDK_MINOR_VERSION))
    #endif
    
    #if (GDK_MINOR_VERSION % 2)
    #define GDK_VERSION_PREV_STABLE        (G_ENCODE_VERSION (GDK_MAJOR_VERSION, GDK_MINOR_VERSION - 1))
    #else
    #define GDK_VERSION_PREV_STABLE        (G_ENCODE_VERSION (GDK_MAJOR_VERSION, GDK_MINOR_VERSION - 2))
    #endif
    
    #ifndef GDK_VERSION_MIN_REQUIRED
    # define GDK_VERSION_MIN_REQUIRED      (GDK_VERSION_PREV_STABLE)
    #endif
    
    #ifndef GDK_VERSION_MAX_ALLOWED
    # if GDK_VERSION_MIN_REQUIRED > GDK_VERSION_PREV_STABLE
    #  define GDK_VERSION_MAX_ALLOWED      GDK_VERSION_MIN_REQUIRED
    # else
    #  define GDK_VERSION_MAX_ALLOWED      GDK_VERSION_CUR_STABLE
    # endif
    #endif
    
    int main(){return 0;}
    

    So wirklich kann ich das ganze also nicht nachvollziehen...
    Gibts vielleicht noch andere Optionen, wie ich das zum laufen bekomme? Benötigt ihr dazu vielleicht noch mehr Informationen? Wenn ja welche?

    MfG. Christoph



  • Ich befürchte, dass Du mit dem Suchen in den eingebundenen Development Files nicht viel weiter kommst. Was ich auch befürchte, ist, dass Du Dein Entwicklungsenvironment irgendwie zerschossen hast.
    Machen wir doch einmal einen Abgleich (in Deinem 1. Post ist der Output leider nicht vollständig zu sehen....)
    Was ergibt bei Dir "pkg-config --libs --cflags gtkmm-3.0"?? Mach mal einen Abgleich von meinem Output, der ja immerhin funktioniert:

    $ pkg-config --libs --cflags gtkmm-3.0
    -pthread -I/usr/include/atkmm-1.6 -I/usr/include/giomm-2.4 -I/usr/lib/i386-linux-gnu/giomm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/lib/i386-linux-gnu/pangomm-1.4/include -I/usr/include/gtk-3.0 -I/usr/include/cairomm-1.0 -I/usr/lib/i386-linux-gnu/cairomm-1.0/include -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gtk-3.0/unix-print -I/usr/include/atk-1.0 -I/usr/include/glibmm-2.4 -I/usr/lib/i386-linux-gnu/glibmm-2.4/include -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/sigc++-2.0 -I/usr/lib/i386-linux-gnu/sigc++-2.0/include -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gio-unix-2.0/ -I/usr/include/gtkmm-3.0 -I/usr/lib/gtkmm-3.0/include -I/usr/include/gdkmm-3.0 -I/usr/lib/gdkmm-3.0/include -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 -lpangomm-1.4 -lgtk-3 -lglibmm-2.4 -lcairomm-1.0 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lsigc-2.0 -lgobject-2.0 -lglib-2.0



  • Nicht vollständig? Ist eigentlich alles kopiert. Meiner hat auch alles ausgegeben. Der Browser(zumindest bei mir) will das nur unbedingt alles in einer Zeile darstellen.
    Da ich ja ein Programmierer bin, hab ich mir für den Vergleich ein PHP-Skript geschrieben:

    $me  = explode( ' ', '-pthread -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include/pango-1.0 -I/usr/local/include/gio-unix-2.0/ -I/usr/include/atkmm-1.6 -I/usr/include/giomm-2.4 -I/usr/lib/i386-linux-gnu/giomm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/lib/i386-linux-gnu/pangomm-1.4/include -I/usr/include/gtk-3.0 -I/usr/include/cairomm-1.0 -I/usr/lib/i386-linux-gnu/cairomm-1.0/include -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gtk-3.0/unix-print -I/usr/include/atk-1.0 -I/usr/include/glibmm-2.4 -I/usr/lib/i386-linux-gnu/glibmm-2.4/include -I/usr/include/sigc++-2.0 -I/usr/lib/i386-linux-gnu/sigc++-2.0/include -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gtkmm-3.0 -I/usr/lib/gtkmm-3.0/include -I/usr/include/gdkmm-3.0 -I/usr/lib/gdkmm-3.0/include  -pthread -L/usr/local/lib -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 -lpangomm-1.4 -lgtk-3 -lglibmm-2.4 -lcairomm-1.0 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lgmodule-2.0 -lcairo -lsigc-2.0 -lgobject-2.0 -lgthread-2.0 -lrt -lglib-2.0' );
    $his = explode( ' ', '-pthread -I/usr/include/atkmm-1.6 -I/usr/include/giomm-2.4 -I/usr/lib/i386-linux-gnu/giomm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/lib/i386-linux-gnu/pangomm-1.4/include -I/usr/include/gtk-3.0 -I/usr/include/cairomm-1.0 -I/usr/lib/i386-linux-gnu/cairomm-1.0/include -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gtk-3.0/unix-print -I/usr/include/atk-1.0 -I/usr/include/glibmm-2.4 -I/usr/lib/i386-linux-gnu/glibmm-2.4/include -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/sigc++-2.0 -I/usr/lib/i386-linux-gnu/sigc++-2.0/include -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gio-unix-2.0/ -I/usr/include/gtkmm-3.0 -I/usr/lib/gtkmm-3.0/include -I/usr/include/gdkmm-3.0 -I/usr/lib/gdkmm-3.0/include -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 -lpangomm-1.4 -lgtk-3 -lglibmm-2.4 -lcairomm-1.0 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lsigc-2.0 -lgobject-2.0 -lglib-2.0' );
    
    foreach( $me as $x => $y ) if( $y == '' ) unset( $me[$x] );
    foreach( $his as $x => $y ) if( $y == '' ) unset( $his[$x] );
    
    echo "Alles, was ich \$me eingebunden hat, \$his aber nicht:\n";
    print_r( array_values( array_diff($me,$his)));
    
    echo "\n\nAlles, was ich \$his eingebunden hat, \$me aber nicht:\n";
    print_r( array_values( array_diff($his,$me)));
    

    Ausgegeben hat das nun folgendes in verständlicher Art:

    Alles, was ich ich eingebunden hab, du aber nicht:
    Array
    (
        [0] => -I/usr/local/include/glib-2.0
        [1] => -I/usr/local/lib/glib-2.0/include
        [2] => -I/usr/local/include/pango-1.0
        [3] => -I/usr/local/include/gio-unix-2.0/
        [4] => -L/usr/local/lib
        [5] => -lgmodule-2.0
        [6] => -lgthread-2.0
        [7] => -lrt
    )
    
    Alles, was du eingebunden hast, ich aber nicht:
    Array
    (
        [0] => -I/usr/include/glib-2.0
        [1] => -I/usr/lib/i386-linux-gnu/glib-2.0/include
        [2] => -I/usr/include/pango-1.0
        [3] => -I/usr/include/gio-unix-2.0/
    )
    

    Ich hoff, du kannst damit etwas anfangen. Das ergibt also, das:
    - ich Dinge eingebunden hab, die du nicht eingebunden hast und
    - du Dinge eingebunden hast, die ich wiederum nicht eingebunden hab.

    Im PHP-Code oben ist $me das, was meine Konsole ausgibt und $his ist das, was deine Konsole ausgegeben hat.

    MfG. Ich



  • Ich befürchte, weiss es aber natürlich nicht sicher, da ich nicht vor Deinem Bildschirm sitze:

    Was haben diese Dateien auf usr/local verloren?? Es gibt eine klare Regel für

    /usr/local
    distributionsunabhängige lokale Hierarchie. Hier kann und soll die lokale Systemadministration Programme und Daten ablegen, die von der entsprechenden Distribution des jeweiligen Systems unabhängig installiert worden sind, wie etwa selbstkompilierte oder unabhängig von der Distribution heruntergeladene Programme und Dateien. Den Installationsmechanismen der betreffenden Distribution ist es ausdrücklich untersagt, diese Verzeichnisstruktur zu berühren. Die Gestaltung der internen Struktur von /usr/local obliegt der lokalen Systemadministration und ist vom FHS nicht vorgegeben.

    Den Installationsmechanismen der betreffenden Distribution ist es ausdrücklich untersagt, diese Verzeichnisstruktur zu berühren.
    Wahrscheinlich hast Du mit dieser make Aktivität, die überhaupt nicht notwendig ist (siehe Dein 1. Posting) dort korrupte Files erzeugt (Version?)

    Was Du jetzt machen kannst, ist wahrscheinlich nur diese Files wieder zu deinstallieren, GTKmm vollkommen neu aufzusetzen - oder was auch immer.

    Hier einen seriösen Tipp zu geben ist eigentlich unmöglich, daher mache ich das auch nicht - vielleicht weiss ja einer der mitliest einen guten Rat - ich klnke mich hier jedenfalls mal aus

    Trotzdem viel Erfolg!



  • Soso, interessant. Ich hab keine Ahnung, warum die auf /usr/local sind. Aber das dürfte nur aus der Installation von GTK+ kommen. GTKmm hab ich wie oben beschrieben installiert. Ist ja auch egal.
    Ich werde also mal versuchen, sämtliche Spuren von GTK+ und GTKmm zu löschen. Danach GTK+ für C installieren und testen und danach GTKmm für C++ installieren und testen.

    Und dabei wollte ich einfach nur eine graphische Oberfläche für C++...

    MfG. Ich


Anmelden zum Antworten