gtkmm unter Windows mit Visual Studio



  • Hallo,
    ich habe GTK+ und gtkmm unter Windows installiert. In ein neues Win32-Projekt habe ich die erforderlichen Include- und Librarypfade angegeben und wollte das Beispielprojekt:
    #include <gtkmm.h>
    int main(int argc, char *argv[])
    {
    Gtk::Main kit(argc, argv);
    Gtk::Window window;
    Gtk::Main::run(window);
    return 0;
    }

    übersetzen. Ich bekomme Compilerfehler in der Datei glibmm-2.4\glibmm/refptr.h. Hat jemand eine Idee oder weiß, was ich vielleicht noch vergessen habe?

    Auszug der ersten Fehler:

    C:\PROGRA~1\GTK/include/glibmm-2.4\glibmm/refptr.h(77) : error C2535: '__thiscall Glib::RefPtr<T_CastFrom>::Glib::RefPtr<T_CastFrom>(const class Glib::RefPtr<T_CastFrom> &)' : Member-Funktion bereits definiert oder deklariert

    C:\PROGRA~1\GTK/include/glibmm-2.4\glibmm/refptr.h(70) : Siehe Deklaration von 'RefPtr<T_CppObject>::RefPtr<T_CppObject>'
    C:\PROGRA~1\GTK/include/glibmm-2.4\glibmm/refptr.h(155) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'Glib::RefPtr<T_CppObject>'
    C:\PROGRA~1\GTK/include/glibmm-2.4\glibmm/refptr.h(94) : error C2535: 'class Glib::RefPtr<T_CastFrom> &__thiscall Glib::RefPtr<T_CastFrom>::operator =(const class Glib::RefPtr<T_CastFrom> &)' : Member-Funktion bereits definiert oder deklariert
    C:\PROGRA~1\GTK/include/glibmm-2.4\glibmm/refptr.h(87) : Siehe Deklaration von '='
    C:\PROGRA~1\GTK/include/glibmm-2.4\glibmm/refptr.h(155) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'Glib::RefPtr<T_CppObject>'



  • Hast du dir mal die FAQ Beiträge zu dem Thema angesehen, ob da deine Includes und lib-Angaben übereinstimmen?



  • ich habe die include-angaben aus den faqs benutzt!
    gibt es noch spezielle compiler-defs die für das übersetzen unter windows genutzt werden müssen?
    in der datei sind folgende angaben:
    /* $Id: refptr.h,v 1.4 2005/04/07 08:28:46 murrayc Exp $ */

    ist es vielleicht eine veraltete version mit fehlern?
    wobei ich die neuste "stable" verwende.



  • mr orange schrieb:

    ich habe die include-angaben aus den faqs benutzt!

    👍

    gibt es noch spezielle compiler-defs die für das übersetzen unter windows genutzt werden müssen?

    Nein, eigentlich nicht. Allerdings nutze ich gtkmm unter Unix und nicht unter Windows, könnte also sein, dass sich an der aktuellen Version geändert hat 😕
    Uhm, evtl. weiß ja einer der anderen in dem Punkt Rat.

    ist es vielleicht eine veraltete version mit fehlern?

    ne, du bist auf dem neuesten Stand.

    Nutzt du eine IDE oder kompilierst du mit MinGW aus der Shell?

    Hm, mit einem ähnlichen Code gab's kürzlich schon mal Fehler... schreib's mal so um:

    #include <gtkmm.h>
    
    int main(int argc, char *argv[])
    {
      Gtk::Main kit(argc, argv);
      Gtk::Window window;
    
      kit.run(window);
      return 0;
    }
    


  • habe den fehler glaube ich gefunden:
    Ich verwende ms visual studio 6.0 und der enthaltene compiler kann den gtkmm c++-code nicht übersetzen. entweder unterstützt dieser noch nicht alle c++-standards oder gtkmm verwendet irgendwelche gnu-spezifischen erweiterungen...
    jedenfalls habe ich mir mingw herruntergeladen und die dev-c++ gui von bloodshed
    gtk+ anwendungen kann ich erstellen und ausführen, bei gtkmm kann ich zwar compilieren, aber nicht linken. ich bekomme folgende fehler:
    [Linker error] undefined reference to Gtk::Main::Main(int&, char**&, bool)' [Linker error] undefined reference toGtk::Window::Window(Gtk::WindowType)'
    [Linker error] undefined reference to `Gtk::Main::run(Gtk::Window&)'
    ...
    es ist wohl eine gtkmm library nicht gelinkt. welche müsste das sein?
    habe alle aus den "faqs" angegeben.

    insgesamt kommt mir gtkmm unter windows fast wie eine bastellösung vor, als das man damit sinnvoll oberflächenentwicklung betreiben könnte. gibt es irgend jemanden, der unter windows mit einer ide gtkmm-entwicklung betreibt? habe noch kein tutorial oder beispielprojekt gefunden.



  • Uh, bei VC 6 sollten hier im Forum generell die Alarmglocken klingeln. Hättest du gleich im ersten Post die 6er genannt, hätte dir JEDER hier gesagt, das du das Ding wegschmeissen sollst. Absolut nicht ISO-C++ konform.

    Weiterhin unterstützt die aktuellste gtkmm Version eh nur MSVC8.0! Nicht mal die 7.1 (2003) wird von denen unterstützt. Zieh dir doch einfach MSVC 2005 Express kostenlos bei MS runter. Musste ja nicht mit dem alten Ding rumgurken.



  • insgesamt kommt mir gtkmm unter windows fast wie eine bastellösung vor, als das man damit sinnvoll oberflächenentwicklung betreiben könnte. gibt es irgend jemanden, der unter windows mit einer ide gtkmm-entwicklung betreibt? habe noch kein tutorial oder beispielprojekt gefunden.

    Da bis zur aktuellen gtkmm das MSVC tabu war, wirst du nichts großartiges finden. Ich hab damals auch gtkmm versucht, bin kläglich mit MSVC gescheitert und hab mich nach was anderem umgesehen. Heute soll gtkmm mit msvc8 besser zusammen spielen, aber für mich zu spät. 😉



  • mr orange schrieb:

    habe den fehler glaube ich gefunden:
    Ich verwende ms visual studio 6.0 und der enthaltene compiler kann den gtkmm c++-code nicht übersetzen. entweder unterstützt dieser noch nicht alle c++-standards oder gtkmm verwendet irgendwelche gnu-spezifischen erweiterungen...

    ne, das liegt tatsächlich am alten VC++ 6.0 Compiler, der ist im Bereich von Templates sehr schwach und Glib::RefPtr ist nun mal eine Klasse, die relativ viel Template-Zeugs benützt.

    es ist wohl eine gtkmm library nicht gelinkt. welche müsste das sein?
    habe alle aus den "faqs" angegeben.

    Bitte mit den offiziellen Angaben querchecken: http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/ape.html (Eventuell habe ich eine vergessen)
    Ca. in der Mitte der Seite findest du die Angaben.

    insgesamt kommt mir gtkmm unter windows fast wie eine bastellösung vor, als das man damit sinnvoll oberflächenentwicklung betreiben könnte. gibt es irgend jemanden, der unter windows mit einer ide gtkmm-entwicklung betreibt? habe noch kein tutorial oder beispielprojekt gefunden.

    Ich hab's vor nem Viertel Jahr mal bei nem Bekannten installiert und es unter VC+ 8.0 auch locker zum Laufen gekriegt. Hatte damit nie Probleme.



  • habe es hinbekommen - die erste gtkmm-anwendung läuft!
    habe einen "GTKmm-Template-Installer für DevC++" von dem forenmitglied evilissimo gefunden. ich musste nur noch den pkg-config richtig konfigurieren, damit dieser die packetdateien findet und dann gings.
    wenn ich es jetzt noch hinbekommen das die visual studio ide den gnu-compiler verwendet, dann bin ich am ziel

    danke soweit


Log in to reply