g_file_new_for_path () вызывает ошибку сегментации - PullRequest
2 голосов
/ 29 августа 2011
// 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 ]

3 голосов
/ 29 августа 2011

Вам необходимо позвонить g_type_init() перед использованием g_file_new_for_path - согласно этой теме .После этого программа работает.

2 голосов
/ 29 августа 2011

Ель всего, что вы должны использовать

// 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(...).

...