Ich schrieb kleine GTK + Anwendung auf C++, die für mich auf Debian x64 mit Gnome 3 funktioniert. Es funktioniert jedoch nicht auf Lubuntu x86. Also habe ich ein Testprogramm geschrieben, das ein Fenster mit einigen Widgets aus meiner gui.glade-Datei erstellt, und es funktioniert auch nicht auf Lubuntu, sondern auf Debian. Hier geht Testcode:GTK + 3 Anwendungen basierend auf .glade Datei auf verschiedenen OS
#include <gtk/gtk.h>
void create_window()
{
GtkBuilder *builder;
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "src/gui.glade", NULL);
gtk_builder_connect_signals (builder, NULL);
GtkWidget *window;
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
gtk_window_set_title (GTK_WINDOW (window), "Startup Settings");
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
gtk_widget_show (window);
}
int main (int argc, char *argv[])
{
gtk_init (&argc, &argv);
create_window();
gtk_main();
}
ich kompilieren es mit g ++:
g++ -std=c++11 `pkg-config --cflags gtk+-3.0` test.cpp -rdynamic `pkg-config --libs gtk+-3.0`
Ausgang Fehler:
** (a.out:17864): WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
(a.out:17864): Gtk-CRITICAL **: gtk_window_set_title: assertion 'GTK_IS_WINDOW (window)' failed
(a.out:17864): GLib-GObject-WARNING **: invalid (NULL) pointer instance
(a.out:17864): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
(a.out:17864): Gtk-CRITICAL **: gtk_widget_show: assertion 'GTK_IS_WIDGET (widget)' faile
Sie können herunterladen gui.glade here.
Überprüfen Sie Ihre Fehler (letztes Argument von 'gtk_builder_add_from_file()'). – andlabs
@andlabs, wie bekomme ich eine Fehlermeldung oder einen Code? Es ist ein Fehler aufgetreten ('gtk_builder_add_from_file: assertion 'error == NULL || * error == null' fehlgeschlagen'), aber ich kann' g_print (error-> message) nicht ', es verursacht Segmentierungsfehler. – hant0508