20

これは重複した質問ではないと思います。この質問を投稿する前に、すべての質問/回答を見てきました。私はここで別の状況にあると思います。

Ubuntu 12.04を使用し、GTK2および3をダウンロードしました。GNOMEのWebサイトから簡単なGTKソースコードをコピーしました。しかし、ターミナルでこのコマンドを使用すると、次のようになります。

gcc `pkg-config --cflags --libs gtk+-3.0`  hello.c -o hello

私はこれを手に入れます:

hello.c:(.text+0x17): undefined reference to `gtk_init'
hello.c:(.text+0x23): undefined reference to `gtk_window_new'
hello.c:(.text+0x47): undefined reference to `gtk_main_quit'
hello.c:(.text+0x5b): undefined reference to `g_signal_connect_data'
hello.c:(.text+0x67): undefined reference to `gtk_widget_show'
hello.c:(.text+0x6c): undefined reference to `gtk_main'

これが私のコードです:

#include <gtk/gtk.h>

int
main (int   argc,
char *argv[])
{
  GtkWidget *window;

  gtk_init (&argc, &argv);

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

  g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);

  gtk_widget_show (window);

  gtk_main ();

  return 0;
}

GTK +のバージョンが2つあるので、エラーが表示されるかどうかはわかりません。私はUbuntu/Linuxでのアプリケーション開発の初心者です。

4

2 に答える 2

31

ライブラリの前にとして表示されるソースファイルを使用してコンパイルする必要がありますgcc hello.c $(pkg-config --cflags --libs gtk+-3.0) -o hello。その理由は、リンカーの動作です。つまり、コンパイルの前にそのライブラリのシンボルが表示されない限り、ライブラリはリンクされません。
お役に立てれば!

于 2012-07-18T17:28:29.053 に答える
-1

gtkライブラリをプロジェクトに直接含めることもできます。

  1. Eclipseで展開:プロジェクト>プロパティ> C /C++ビルド>設定>ツール設定>クロスGCCリンカー>ライブラリ
  2. 設定:ライブラリ検索パス(-L)からファイル "libgtk-n.so"へのパス(バージョンはn)。Lubuntuにインストール(apt-get install libgtk-3-dev)した後、これは私にとって「/ usr / lib /x86_64-linux-gnu/」でした。
  3. 次に、ライブラリに追加します(-l):gtk-n
于 2017-07-15T11:18:23.380 に答える