#include <gtk/gtk.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
void display(GtkButton * b, gpointer data)
{
while(1)
{
printf("hurrah!");
}
}
void closeapp(GtkButton * b, gpointer data)
{
gtk_main_quit();
}
int main(int argc,char *argv[])
{
Widgets widg;
printf("hello");
GtkBuilder *gtkBuilder;
GtkWidget *window;
gtk_init(&argc,&argv);
gtkBuilder = gtk_builder_new();
gtk_builder_add_from_file(gtkBuilder,"hello_world.glade",NULL);
window = GTK_WIDGET(gtk_builder_get_object(gtkBuilder,"mywindow"));
widg.e1 = GTK_ENTRY( gtk_builder_get_object(gtkBuilder, "entry1" ) );
gtk_builder_connect_signals(gtkBuilder, &widg);
g_object_unref(G_OBJECT(gtkBuilder));
gtk_widget_show(window);
gtk_main();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
单击按钮时,GUI 变得无响应。该程序应该打印“Hurrah”,并且它应该接受其他(closeapp)按钮的响应。我尝试使用 gdk_thread_enter() 和 gdk_thread_leave(),但它警告说它们已被弃用。请帮忙!
是否可以在Gtk(mm)程序上进行静态链接(编译)?我需要程序减少对用户系统依赖性的干扰.
我尝试:
g++ -static data/Area.h data/Picture.cpp data/GLScene.cpp data/KBDialog.cpp data/Dialogs.h data/FilePreview.cpp data/MainWindow.cpp prog.cpp -o prog `pkg-config --cflags --libs gtkmm-2.4 gtkglextmm-1.2 exiv2`
Run Code Online (Sandbox Code Playgroud)
但它失败了:
/usr/bin/ld: cannot find -lgtkmm-2.4
/usr/bin/ld: cannot find -lGL
/usr/bin/ld: cannot find -latkmm-1.6
/usr/bin/ld: cannot find -lgdkmm-2.4
/usr/bin/ld: cannot find -lpangomm-1.4
/usr/bin/ld: cannot find -lgdk_pixbuf-2.0
/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/libgio-2.0.a(glocalfileinfo.o): In function `lookup_gid_name':
(.text+0x207a): warning: Using 'getgrgid_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/libgio-2.0.a(glocalvfs.o): In function `g_local_vfs_parse_name':
(.text+0x26c): warning: Using 'getpwnam' in statically …Run Code Online (Sandbox Code Playgroud) 我正在运行GTK教程中的"hello-world"代码:
#include <gtk/gtk.h>
int main(int argc, char* argv[])
{
GTKWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我使用以下方法编译它时,我收到此错误:
$ gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0`
base.c: In function ‘main’:
base.c:5:2: error: unknown type name ‘GTKWidget’
GTKWidget *window;
Run Code Online (Sandbox Code Playgroud)
似乎问题不是gtk.h没有包含在内,而是说GTKWidget不是一个东西?
什么是GTK +以及它与OpenGL有什么关系?我可以在C中使用OpenGL创建GUI界面吗?我研究过,人们说要用GTK +,但我根本不知道它是什么.
我已经安装了ubuntu 16.10版本。我使用sudo apt-get remove --purge gtk2.0卸载了gtk。重新启动后,我的整个GUI都没有加载,也没有登录屏幕。我可以使用Ctrl+ Alt+ 访问其他终端f1。我如何找回GUI界面?任何帮助表示赞赏。谢谢。