Massive Probleme mit GTKmm und TreeModelColumn



  • Hallo,

    ich schreibe grade unter Windows das erste mal eine GUI mit Gtkmm, glade3 und gtk+3. Nun habe ich eine Combobox und will diese natürlich auch befüllen und brauche dafür mein Model.

    Nun habe ich das alles auch gemacht, compiled ohne warnings, etc. Allerdings ist mir beim schließen des Programms aufgefallen, dass ich ein SIGILL bekomme. Habe das ganze mal gedebugged mit folgendem output:

    Program received signal SIGILL, Illegal instruction.
    0x63f8cd68 in vtable for Gtk::TreeModelColumnRecord ()
       from C:\mingw\bin\libgtkmm-3.0-1.dll
    

    Nun habe ich mal etwas rumprobiert. So sieht meine Klasse aktuell aus:

    class GUI {
    
        class DeviceColumn : public Gtk::TreeModel::ColumnRecord {
        public:
            DeviceColumn() {
                add(col_id);
                add(col_name);
            }
            Gtk::TreeModelColumn<int> col_id;
            Gtk::TreeModelColumn<Glib::ustring> col_name;
        };
    
        class TextColumn : public Gtk::TreeModel::ColumnRecord {
        public:
            TextColumn() {
                add(col_name);
            }
            Gtk::TreeModelColumn<Glib::ustring> col_name;
        };
    public:
        GUI(int argc, char **argv);
        virtual ~GUI();
        void Show();
    private:    
        DeviceColumn devices;
        TextColumn plugins;
        TextColumn functions;
        TextColumn profiles;
    
        Joystick * Joy;
    
        Glib::RefPtr<Gtk::Application> app;
        Gtk::Window* wMain;
        Glib::RefPtr<Gtk::Builder> refBuilder;
        Gtk::Button* btnSet;
        Gtk::Button* btnRemove;
        Gtk::Button* btnInfo;
        Gtk::Button* btnSetup;
        Gtk::ComboBox* cbDevice;
        Gtk::ComboBox* cbPlugin;
        Gtk::ComboBox* cbFunction;
        Gtk::Entry* txtParameters;
        Gtk::RadioButton* rbSlider;
        Gtk::RadioButton* rbAxis;
        Gtk::RadioButton* rbActive;
        Gtk::RadioButton* rbInactive;
        Gtk::RadioButton* rbConfigure;
        Gtk::TreeView* tvControls;
    
        void on_btnSet_clicked();
        void on_btnRemove_clicked();
        void on_btnInfo_clicked();
        void on_btnSetup_clicked();
    
        void on_rbSlider_toggled();
        void on_rbAxis_toggled();
        void on_rbActive_toggled();
        void on_rbInactive_toggled();
        void on_rbConfigure_toggled();
    };
    

    Kommentiere ich nun

    DeviceColumn devices;
        TextColumn plugins;
        TextColumn functions;
        TextColumn profiles;
    

    aus, so tritt das SIGILL nichtmehr auf und das Programm schließt sauber. Es sei dazu gesagt, ich habe momentan diese Variablen nur definiert, ich arbeite noch nicht damit.

    Ich bin auch hierauf gestoßen:
    http://marc.info/?l=gtkmm&m=98235391130321&w=2

    Kann mir da einer weiterhelfen? Oder muss das developerseitig des gtkmm teams gefixt werden?

    Danke für jeden hinweis.

    Gruß Nidhoegger



  • Nidhoegger schrieb:

    Hallo,

    ich schreibe grade unter Windows das erste mal eine GUI mit Gtkmm, glade3 und gtk+3. Nun habe ich eine Combobox und will diese natürlich auch befüllen und brauche dafür mein Model.

    Meines Wissens gibt es GTK+ 3 unter Windows noch nicht....

    http://www.gtk.org/download/win32.php
    http://stackoverflow.com/questions/8256793/gtkmm-3-0-library-for-windows

    Es bleibt also nur die Möglichkeit das mit GTK+2 umzusetzen.

    Ich persönlich bin recht frustriert, was GTK+3 (auch unter Linux) betrifft und bevorzuge daher ein ausgereiftes GTK+2 sowohl unter Linux, als auch unter Windows...
    Naja - die Hoffnung stirbt zuletzt - auch GTK+3 wird wohl irgendwann erwachsen werden.

    Ach ja -interessant wäre, wie Du an angebliche GTK+3 Libs für Windows gekommen bist. Denn sonst wäre ich tatsächlich nicht auf dem neusten Stand.. 🙂



  • Hi,

    http://www.tarnyko.net/en/?q=node/23

    Funktioniert einwandfrei. Nur eben o.g. Problem. Aber ich bin jetzt auch am überlegen (da ich noch am anfang stehe) ob ich das nicht mit GTK2 umsetzen soll...

    Gruß


Anmelden zum Antworten