0

私は持っています:

GFile* gf = g_file_new_for_path(file_path);

私のコードで。しかし、コンパイルしようとすると、次のエラーが表示されます。

未定義の参照: 'g_file_new_for_path'

私が持っているインクルードセクションで#include <gio/gio.h>

このコードのどこが間違っていますか?

4

1 に答える 1

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 を使用していないため、正確なパッケージ名を確認できません。

于 2010-06-01T08:01:47.050 に答える