3

システム: Windows7、32 ビット、GTK 2.24.10、mingw
基本的な helloworld.c タイプの GTK ベースのアプリケーションを作成しようとしています。ただし、実行されません。
これらは私が従った手順です。

  1. MinGW をインストールします。
  2. GTK+ をすべて 1 つのバンドルでダウンロードします。
  3. C:\gtk フォルダーにコンテンツを抽出します。
  4. cmd を開いて C:\gtk\bin ディレクトリに移動し、pkg-config --cflags --libs gtk+-win32-2.0 を実行します。
  5. コンパイル フラグのリストと、プロジェクトをリンクするライブラリが出力されます。それらをコピーして、以下のようにバスファイルを作成します。set VAR=FLAGS start cmd ここで、VAR = GTK、FLAGS = 前のコマンド (pkg-config) の出力。ファイルをコンパイルする場合は、次のコマンドを使用します: gcc foo.c %VAR%

D:\gtk>gcc -o project helloworld.c %GTK%
gcc: %GTK%: No such file or directory helloworld.c:1:21: error: gtk/gtk.h: No such file or directory helloworld.c : 関数 'main' 内: helloworld.c:5: エラー: 'GtkWidget' が宣言されていません (この関数で最初に使用) helloworld.c:5: エラー: (宣言されていない各識別子は一度だけ報告されます helloworld.c:5: エラー: helloworld.c:5: エラー: 'window' が宣言されていません (この関数で最初に使用されます) helloworld.c:9: エラー: 'GTK_WINDOW_TOPLEVEL' が宣言されていません (この関数で最初に使用されます)

D:\gtk>gcc -Wall -g helloworld.c -o helloworld pkg-config --cflags gtk+-2.0 pkg-config --libs gtk+-2.0
gcc: pkg-config: No such file or directory
gcc: gtk+-2.0: No such file or directory
gcc: pkg-config: No such file or directory
gcc: gtk+-2.0: No such file or directory
cc1.exe: error: unrecognized command line option "-fcflags"
cc1.exe: error: unrecognized command line option "-flibs"

D:\gtk のバッチ ファイル

set GTK=-mms-bitfields -IC:/gtk/include/gtk-2.0 -IC:/gtk/lib/gtk-2.0/include -IC:/gtk/include/atk-1.0 -IC:/gtk/include/cairo -IC:/gtk/include/gdk-pixbuf-2.0 -IC:/gtk/include/pango-1.0 -IC:/gtk/include/glib-2.0 -IC:/gtk/lib/glib-2.0/include -IC:/gtk/include -IC:/gtk/include/freetype2 -IC:/gtk/include/libpng14  -LC:/gtk/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl
start cmd

helloworld.c

#include <gtk/gtk.h>

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

    gtk_init (&argc, &argv);

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_widget_show  (window);

    gtk_main ();

    return 0;
}

参考:Windowsでgtkをインストールしてgccを使ってコンパイル?

4

3 に答える 3

6

最初に次の手動の手順を試すことができます。

1) コマンド プロンプトで pkg-config コマンドを実行して、インクルード フラグを取得します。

c:\dev\gtk224\bin\pkg-config.exe --cflags gtk+-2.0

これは私の出力です:

-mms-bitfields -Ic:/dev/gtk224/include/gtk-2.0 -Ic:/dev/gtk224/lib/gtk-2.0/include -Ic:/dev/gtk224/include/atk-1.0 -Ic:/dev/gtk224/include/cairo -Ic:/dev/gtk224/include/gdk-pixbuf-2.0 -Ic:/dev/gtk224/include/pango-1.0 -Ic:/dev/gtk224/include/glib-2.0 -Ic:/dev/gtk224/lib/glib-2.0/include -Ic:/dev/gtk224/include -Ic:/dev/gtk224/include/freetype2 -Ic:/dev/gtk224/include/libpng14

2) (1) からの出力を変数 GTK_INCLUDES に設定します。

C:\dev\1_repo\gtk_scratch>set GTK_INCLUDES=-mms-bitfields -Ic:/dev/gtk224/include/gtk-2.0 -Ic:/dev/gtk224/lib/gtk-2.0/include -Ic:/dev/gtk224/include/atk-1.0 -Ic:/dev/gtk224/include/cairo -Ic:/dev/gtk224/include/gdk-pixbuf-2.0 -Ic:/dev/gtk224/include/pango-1.0 -Ic:/dev/gtk224/include/glib-2.0 -Ic:/dev/gtk224/lib/glib-2.0/include -Ic:/dev/gtk224/include -Ic:/dev/gtk224/include/freetype2 -Ic:/dev/gtk224/include/libpng14

(ステップ(1)からの出力を使用していることを確認してください)

3) ライブラリ フラグに対してステップ 1 と同じことを行います。

c:\dev\gtk224\bin\pkg-config.exe --libs gtk+-2.0

これは私の出力です:

-Lc:/dev/gtk224/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl

4) (3) の出力を変数 GTK_LIBS に設定する

C:\dev\1_repo\gtk_scratch>set GTK_LIBS=-Lc:/dev/gtk224/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl

(ステップ(3)からの出力を使用していることを確認してください)

5) gtk+ と MinGW がパス上にあることを確認します。

set PATH=c:\dev\MinGW\bin\;c:\dev\gtk224\bin

(必ず mingw および gtk ディレクトリへのパスを設定してください)

6) コンパイル:

c:\dev\MinGW\bin\gcc.exe -g helloworld.c -o helloworld %GTK_INCLUDES% %GTK_LIBS%

7) 正常にコンパイルできたら、ステップ 2、4、5、および 6 で行ったことをバッチ ファイルにコピーして、バッチ ファイルを実行するだけでアプリをコンパイルできるようにします。

于 2013-10-12T03:30:24.067 に答える
3

エラーはここにあります。

pkg-configリンクとライブラリのフラグを決定するのに役立つ (強くお勧めします) ユーティリティです。あなたが得た問題は、あなたのようにそれらを渡すと、gccがそれをパラメーターとして解釈することです-サブシェルでそれらを実行する必要があります(ただし、Windowsシェルまたはcygwinでそれを行う方法はわかりません)bashの下では、$(pkconfig --libs gtk-2.0)または代わりにバッククォートを使用$(...)

D:\gtk>gcc -Wall -g helloworld.c -o helloworld pkg-config --cflags gtk+-2.0 pkg-config --libs gtk+-2.0
gcc: pkg-config: No such file or directory
gcc: gtk+-2.0: No such file or directory
gcc: pkg-config: No such file or directory
gcc: gtk+-2.0: No such file or directory
cc1.exe: error: unrecognized command line option "-fcflags"
cc1.exe: error: unrecognized command line option "-flibs"
于 2013-10-11T22:21:35.833 に答える