2010-05-29 19 views
0

我有一個:問題的GFILE

GFile* gf = g_file_new_for_path(file_path); 
在我的代碼

。但是,當我嘗試編譯它,我看到錯誤:

未定義的參考:「g_file_new_for_path」

在包括部分我有#include <gio/gio.h>

什麼問題在這個代碼?

+0

我找到解決方法:需要添加makefile -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 – 0xAX 2010-05-29 14:43:32

回答

0

我重新標記了你的問題,這不是GTK +,它是gio。

正如你根據你的評論發現的,你的問題是由於沒有鏈接到正確的庫。這是因爲在C中,僅包含一個頭文件並不會告訴編譯器在哪裏找到實現該頭文件中聲明的事物的代碼。爲此,您通常需要鏈接正確的庫(或直接編譯代碼,就像在自己的項目中一樣)。

順便推薦引用庫的方法是使用諸如pkg-config之類的工具。然後編譯會是這個樣子:

$ gcc -o mygiotest mygiotest.c $(pkg-config --cflags --libs glib-2.0 gobject-2.0 gio-2.0) 

你需要仔細檢查上面的,我不是在Linux作爲我輸入這個,所以我不能驗證確切的包名。