无法让简单的 GTK3 应用程序工作
Can't get a simple GTK3 application to work
我想要的只是一个简单的对话框,select 一个要处理的文件。
有段时间没用C lang了,一直找不到很好用的例子
代码:
#include <gtk/gtk.h>
#include <stdio.h>
int main(int argc, char const *argv[]) {
GtkFileChooserNative *native;
native = gtk_file_chooser_native_new ("Open File", NULL, GTK_FILE_CHOOSER_ACTION_OPEN, NULL, NULL);
return 0;
}
我用这个命令编译它:
gcc `pkg-config gtk+-3.0 --cflags` `pkg-config gtk+-3.0 --libs` -o out dialog.c
我在 gtk_file_chooser_native_new ()
上遇到分段错误
也许 strace 会有所帮助:
您需要致电gtk_init
(before any other GTK function), or have your own application class and call g_application_run。你的 main
应该像往常一样 int main(int argc, char**argv)
。
以下程序没有段错误(在 Linux/Debian/Sid 上,GTK 是 3.22.7)
#include <gtk/gtk.h>
#include <stdio.h>
int main (int argc, char **argv) {
GtkFileChooserNative *native = NULL;
gtk_init (&argc, &argv);
native = gtk_file_chooser_native_new ("Open File", NULL,
GTK_FILE_CHOOSER_ACTION_OPEN, NULL, NULL);
guint res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native));
if (res == GTK_RESPONSE_ACCEPT) {
char *filename;
GtkFileChooser *chooser = GTK_FILE_CHOOSER (native);
filename = gtk_file_chooser_get_filename (chooser);
printf ("should open %s\n", filename);
g_free (filename);
}
/// in a real application perhaps you want: gtk_main ();
return 0;
}
并且确实显示了一个对话框。使用
编译
gcc -Wall -g $(pkg-config gtk+-3.0 --cflags) \
$(pkg-config gtk+-3.0 --libs) \
-o out dialog.c
并在调试时使用 gdb
调试器。
我想要的只是一个简单的对话框,select 一个要处理的文件。 有段时间没用C lang了,一直找不到很好用的例子
代码:
#include <gtk/gtk.h>
#include <stdio.h>
int main(int argc, char const *argv[]) {
GtkFileChooserNative *native;
native = gtk_file_chooser_native_new ("Open File", NULL, GTK_FILE_CHOOSER_ACTION_OPEN, NULL, NULL);
return 0;
}
我用这个命令编译它:
gcc `pkg-config gtk+-3.0 --cflags` `pkg-config gtk+-3.0 --libs` -o out dialog.c
我在 gtk_file_chooser_native_new ()
上遇到分段错误也许 strace 会有所帮助:
您需要致电gtk_init
(before any other GTK function), or have your own application class and call g_application_run。你的 main
应该像往常一样 int main(int argc, char**argv)
。
以下程序没有段错误(在 Linux/Debian/Sid 上,GTK 是 3.22.7)
#include <gtk/gtk.h>
#include <stdio.h>
int main (int argc, char **argv) {
GtkFileChooserNative *native = NULL;
gtk_init (&argc, &argv);
native = gtk_file_chooser_native_new ("Open File", NULL,
GTK_FILE_CHOOSER_ACTION_OPEN, NULL, NULL);
guint res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native));
if (res == GTK_RESPONSE_ACCEPT) {
char *filename;
GtkFileChooser *chooser = GTK_FILE_CHOOSER (native);
filename = gtk_file_chooser_get_filename (chooser);
printf ("should open %s\n", filename);
g_free (filename);
}
/// in a real application perhaps you want: gtk_main ();
return 0;
}
并且确实显示了一个对话框。使用
编译 gcc -Wall -g $(pkg-config gtk+-3.0 --cflags) \
$(pkg-config gtk+-3.0 --libs) \
-o out dialog.c
并在调试时使用 gdb
调试器。