我認爲你正在嘗試編譯一個單獨的源文件,而這個文件本身並不適用。兩個原因。
第一個原因:config.h
是Autoconf輸出的包含平臺特定定義的頭文件的默認名稱。這就是爲什麼你不能在任何地方找到它的原因 - 它是在你的項目上運行./configure
時產生的,其內容取決於你的系統配置。所以它不會被包含在任何項目中,你必須使用Autoconf自己生成它。或者只是註釋掉#include <config.h>
並查看缺少哪些定義,然後自己定義它們。
的另一個原因:
目前我嘗試編譯插座例如testsocket.c和編譯過程中出現了錯誤未定義參考「create_child_plug」。除了在這個頭文件中,我沒有看到任何理由不能工作。 但無論如何,我可能是錯的。
事實上,該文件包含的create_child_plug
一個定義:
extern guint32 create_child_plug (guint32 xid, gboolean local);
所以,問題不在於create_child_plug
沒有定義。你不需要一個頭文件,它就在源文件中定義。 extern
表示此函數的實際代碼位於不同的源文件中。在這種情況下,您將獲得鏈接時(而不是編譯時)錯誤,因爲鏈接程序找不到該函數的任何代碼。你應該看它在.c
文件,而不是一個.h
文件和編譯代碼了。
我建議你下載整個GTK源代碼和編譯,並運行從那裏測試程序,而不是選擇單獨的源文件斷網。
你能提供有關您的系統環境的信息嗎? – summea 2012-02-24 23:57:55
當然。 Ubuntu 10.04/64,Gtk2。 – 2012-02-25 00:21:52
這可能是類似這樣的問題:http://stackoverflow.com/questions/1041059/header-files-in-subdirectories-eg-gtk-gtk-h-vs-gtk-2-0-gtk-gtk-h – summea 2012-02-25 00:38:28