3

C プログラムでハッシュ テーブルを使用したいと考えています。

私はコードします:

...
#include <glib.h>

void main(int argc, char **argv)
{
  GHashTable *g_hash_table;
  ...  
  g_hash_table = g_hash_table_new(g_int_hash, g_int_equal);
...
}

次にコンパイルします。

$ gcc -I/usr/include/glib-2.0
-I/usr/lib/i386-linux-gnu/glib-2.0/include
-lglib-2.0 -o test test.c

または同じコマンド:

$ gcc `pkg-config --cflags --libs glib-2.0` -o test test.c

とにかく結果は次のとおりです。

test.c: underfined reference to `g_int_equal`
test.c: underfined reference to `g_int_hash` 
test.c: underfined reference to `g_hash_table_new`
collect2: ld returned 1 exit status

プログラムをコンパイルできないのはなぜですか? glib ライブラリのインクルードを間違えていますか?

4

2 に答える 2

7

ライブラリを使用するソース ファイルとオブジェクト ファイルのに、コマンド ラインでライブラリを指定する必要があります。

gcc test.c `pkg-config --cflags --libs glib-2.0` -o test 
于 2012-07-13T08:57:57.897 に答える
1

IBM開発者が動作するこのPDFから、次のglibコマンドでの標準インストールがある場合は、pkg-configを使用することをお勧めします。

$ gcc `pkg-config --cflags --libs glib-2.0` -o ex-compile ex-compile.c

インクルードは正しく見え、それをどのように使用しているか。が何かを変更するかどうかは'わかりませんが、PDFを確認することをお勧めします。これには、多くの例と説明が含まれています。

于 2012-07-13T08:44:38.460 に答える