21

Visual Studio で gtk+ を構成しようとしましたが、正しく動作しません。Visual Studio 2010 に gtk をインストールする方法など、適切な解決策を提案してもらえますか?

4

3 に答える 3

38

GTK+ は VS2010 で動作するようになったので、それも動作させたい場合は、数分かかるので、楽しみの準備をしてください。

まず、最新のWindows オールインワン バンドルをダウンロードします。ここで使用した GTK 2.24 バンドルのオプションの直接ダウンロード リンク。直リンクは32bit版です。64 ビット バージョンはまだ実験的なものとしてリストされているため、テストしていません。

バンドルをダウンロードしたら、それを解凍して、C:\gtkまたは私の場合はD:\gtk

次に、GTK フォルダーのシステム環境変数を作成します。コマンドプロンプトを開き、次のように記述します。setx GTKDIR {Path to your GTK folder} /m私の場合は次のようになりますsetx GTKDIR D:\gtk /m

また、GTK+ ビルド アプリケーションを Windows 上で実行するために必要な .dll ファイルをシステム PATH に追加します。物事を非常に簡単にするために、システム PATH をPathEditorで編集することをお勧めします。ここで、私の場合は D:\gtk\bin である GDK バイナリ フォルダーへのパスをシステム PATH に追加します。コマンド プロンプトにPATHと入力して、GTK bin フォルダーが PATH に追加されていることを確認します。

次に、Visual Studio 2010 に移り、新しいプロジェクトを作成します。

File
  ->New
    ->Project
    Visual C++
      ->Win32
        ->Win32 Console Application

次に、アプリケーション ウィザードが表示されます。

クリックして選択:

Windows Application

Empty Project

[完了] をクリックして続行します。

ソース ファイルを追加する前に、ソリューション エクスプローラーでプロジェクト名を右クリックし、 [プロパティ] をクリックします。次に、Configuration Propertiesに移動し、次にVC++ Directoriesに移動します。インクルードファイルとライブラリ ファイルを GTK からインクルード ディレクトリライブラリ ディレクトリに追加する必要があります。

インクルードディレクトリには次のものが必要です

$(GTKDIR)\lib\gtk-2.0\include
$(GTKDIR)\lib\glib-2.0\include
$(GTKDIR)\include

およびライブラリ ディレクトリ:

$(GTKDIR)\lib

まだ Project Properties が表示されている間に、LinkerをクリックしてからSystemをクリックします。右側でSubSystemを探し、ドロップダウン ボックスをクリックします。Windows /SUBSYSTEM:WINDOWS を選択

次に、コンパイラとリンカーのフラグを生成する必要があります。幸いなことに、GTK+ には、これらのフラグを自動的に生成するために使用するpkg-configという便利な小さなツールが付属しています。pkg-config ツールは、GTK の bin フォルダーにあります。私の場合、これは以前に定義したシステム変数を使用したD:\gtk\binまたは%GTKDIR%\binです。コマンド プロンプトを使用して bin フォルダーに移動し (作成されたテキスト ファイルがそこに出力されます)、次のコマンドを実行します。

pkg-config --cflags gtk+-2.0 --msvc-syntax > compilerflags.txt

これにより、必要なコンパイラ フラグが作成され、テキスト ファイルに保存されます。コンパイラ フラグの結果 (フラグ-mms-bitfieldsを削除しました。これは必要のない gcc のみのフラグです):

-ID:/gtk/include/gtk-2.0 -ID:/gtk/lib/gtk-2.0/include -ID:/gtk/include/atk-1.0 -ID:/gtk/include/cairo -ID:/gtk/include/gdk-pixbuf-2.0 -ID:/gtk/include/pango-1.0 -ID:/gtk/include/glib-2.0 -ID:/gtk/lib/glib-2.0/include -ID:/gtk/include -ID:/gtk/include/freetype2 -ID:/gtk/include/libpng14

リンカー フラグについても同じことを行います。

pkg-config --libs gtk+-2.0 --msvc-syntax > linkerflags.txt

リンカーフラグの私の結果:

/libpath:D:/gtk/lib gtk-win32-2.0.lib gdk-win32-2.0.lib atk-1.0.lib gio-2.0.lib pangowin32-1.0.lib gdi32.lib pangocairo-1.0.lib gdk_pixbuf-2.0.lib pango-1.0.lib cairo.lib gobject-2.0.lib gmodule-2.0.lib gthread-2.0.lib glib-2.0.lib intl.lib

必要なすべてのフラグが生成されたら、それらをプロジェクトに追加する必要があります。もう一度、プロジェクト名を右クリックし、[プロパティ] をクリックします。に移動してC/C++をクリックしCommand Lineます。右側に、 [追加オプション]という空のボックスが表示されます。compilerflags.txtの内容をコピーして、このボックスに貼り付けます。

上記を終えたら、 LinkerCommand Lineの順にクリックします。もう一度、linkerflags.txtファイルの内容をコピーして [追加オプション]ボックスに貼り付けます。ここで、最後のリンカ フラグ/ENTRY:mainCRTStartupを追加します。このフラグは、メイン プログラムのエントリ ポイントとして Microsoft の _tmain() ではなく、標準の main() を使用することを Visual Studio に伝えます。

最後に、ソース ファイル フォルダーで、次の新しい .cpp ファイルを作成して追加します。

#include <gtk-2.0\gtk\gtk.h>

int main(int argc, char* argv[])
{
    gtk_init(&argc, &argv);

    GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_widget_set_usize(window, 300, 200);

    g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);   
    gtk_window_set_title(GTK_WINDOW(window), "GTK+ with VS2010");

    gtk_widget_show(window);     

    gtk_main();   
    return 0;
}

これで、すべてをコンパイル、リンク、および実行する準備が整いました。すべてがうまくいった場合、次のようなメッセージが表示されます。ここに画像の説明を入力

まあ、楽しかったですよね?:)

于 2013-07-16T23:16:35.120 に答える