[c++/gtkmm] als shared library crasht beim reload in xchat
-
hi
ich wollte ein kleines plugin für xchat mit gtk-dialoge in c++ schreiben
hab nun allerdins das problem:
wenn ich folgendes plugin in xchat lade
und das dialog-fenster starte funktioniert alles bestensallerdings wenn man im laufenden xchat dann dieses plugin reloaded (zb weil ich was geändert hab) und dann den dialog starten will
beendet sich mein xchat auf die nicht übliche artweiss hier jemand woran das liegt
btw viel wichtiger ... wie ich den fehler beheben kann (erbitte einleutende erklährung ,da ich noch nicht so ganz sattelfest in c++ bin)
hier mal das testplugin:
#include <gtkmm.h> // c++ `pkg-config gtkmm-2.4 --cflags --libs` -Wall -O1 -shared -fPIC gtkmm.cpp -o gtkmm.so extern "C" { #include "xchat/xchat-plugin.h" } #define PNAME "Test" #define PDESC "Blahs"; #define PVERSION "0.1" static xchat_plugin *ph; Gtk::Main main_obj(0, NULL); static int test_cb(char *word[], char *word_eol[], void *userdata) { Gtk::Window window_obj; main_obj.run(window_obj); return 0; } extern "C" { int xchat_plugin_init(xchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version,char *arg); } void xchat_plugin_get_info(char **name, char **desc, char **version, void **reserved) { *name = PNAME; *desc = PDESC; *version = PVERSION; } int xchat_plugin_init(xchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version,char *arg) { ph = plugin_handle; *plugin_name = PNAME; *plugin_desc = PDESC; *plugin_version = PVERSION; xchat_hook_command(ph, "test", XCHAT_PRI_NORM, test_cb, "Usage: Test YES", 0); xchat_print(ph, "Test plugin loaded!\n"); return(1); }
in der konsole gestartet bekomme ich beim reload infos wie :
(xchat:4719): GLib-GObject-WARNING **: cannot register existing type `gtkmm__PangoContext' (xchat:4719): GLib-GObject-WARNING **: cannot register existing type `gtkmm__PangoFont' (xchat:4719): GLib-GObject-WARNING **: cannot register existing type `gtkmm__PangoFontFace' (xchat:4719): GLib-GObject-WARNING **: cannot register existing type `gtkmm__PangoFontFamily'
-
Hm, evtl. musst du den Plugin vorher "entladen".
-
genau das mein ich ja
ob ich es nun direkt reloade
oder erst entlade und dann wieder neu lade macht keinen unterschied