g_file_new_for_path()导致分段错误

时间:2011-08-29 14:01:21

标签: c glib gio

// 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)。
我错误地写了代码吗?或者这是我系统的错误?

P上。 S.:我的系统是Arch Linux,GLib版本是2.28.8-1。

2 个答案:

答案 0 :(得分:3)

根据this thread,您需要在使用g_type_init()之前致电g_file_new_for_path。之后,程序可以运行。

答案 1 :(得分: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(...)