2
// gcc -o 0 $(pkg-config --cflags --libs gtk+-2.0) 1.c
#include <gtk/gtk.h>
int main (int argc, char *argv[]) {
    GFile *f1 = NULL;
    f1 = g_file_new_for_path ("/home/user/1.txt");
    g_printf ("File loaded successfully.\n");
    return 0;
}

当我运行这个程序时,它会导致 g_file_new_for_path () 的分段错误(无论 /home/user/1.txt 是否存在)。
我写错代码了吗?或者它是我系统的错误?

PS:我的系统是Arch Linux,GLib版本是2.28.8-1。

4

2 回答 2

3

您需要g_type_init()在使用之前调用g_file_new_for_path- 根据此线程。之后,程序运行。

于 2011-08-29T17:16:27.127 回答
2

首先你应该使用

// gcc -o 0 $(pkg-config --cflags --libs gio-2.0) 1.c    
#include <gio/gio.h>

代替

// gcc -o 0 $(pkg-config --cflags --libs gtk+-2.0) 1.c    
#include <gtk/gtk.h>

那么你应该g_type_init()之前的g_file_new_for_path(...).

于 2011-08-29T17:53:50.413 回答