g_file_new_for_path()导致分段错误
// 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存在)。
我误写了代码吗?或者这是我的系统的错误?g_file_new_for_path()导致分段错误
P. S.:我的系统是Arch Linux,GLib版本是2.28.8-1。
在使用g_file_new_for_path
之前,您需要致电g_type_init()
- 根据this thread。之后,该程序起作用。
从新版本的glib开始,会自动调用'g_type_init()',并且已被弃用。 – BlackVegetable
所有的杉杉,你应该使用的
// 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(...)
。
gtk + -2.0 pkgconfig文件已包含gio-2.0 :) – 5frame
你可以通过GDB运行它并追加回溯到你的问题吗? – GWW
编程接收到的信号SIGSEGV,分段故障。 0x00000000在? ()(gdb)backtrace#0 0x00000000 in ?? () – 5frame
您需要确保在编译时指定了'-g'标志(如果禁用优化,则标志更容易) – GWW