4

Windows 7 32bit で小さな GUI を作成したいと思います。これは私がしたことです:

  • MinGwをインストールしました。
  • http://www.gtk.org/download/win32.phpから gtk+ オールインワン バンドルをダウンロードし、PATH 変数に追加しました。

正しいインストールを確認するためgccに、コマンド プロンプトに入力しました。エラー メッセージrealgcc: no input fileが返されたので、gcc が正しくインストールされているようです。それから私は実行しようとしましたgtk-demo。それもうまくいきました

  • 私のgoインストールはテストされ、正常に動作します。私はすでにそれを使って小さなサーバーを開発しました。GOROOT と GOPATH は両方とも正しく設定されています。
  • go-gtk をインストールするには、go get github.com/mattn/go-gtk/gtk

インストールは多くの警告で終了しました。

C:\Users\lhk>github.com/mattn/go-gtk/gtk を入手してください

# github.com/mattn/go-gtk/glib

realgcc.exe: 警告: 最後の入力ファイルの後の '-x c' は効果がありません

realgcc.exe: 入力ファイルがありません

# github.com/mattn/go-gtk/gdk

realgcc.exe: 警告: 最後の入力ファイルの後の '-x c' は効果がありません

realgcc.exe: 入力ファイルがありません

# github.com/mattn/go-gtk/パンゴ

realgcc.exe: 警告: 最後の入力ファイルの後の '-x c' は効果がありません

realgcc.exe: 入力ファイルがありません

C:\ユーザー\lhk>

go-gtk のインストールをテストするために、http: //mattn.github.io/go-gtk/のサンプル コードを使用しました。このコードを実行しようとしましgo runたが、エラーメッセージで終了しました:

# github.com/mattn/go-gtk/glib
realgcc.exe: 警告: 最後の入力ファイルの後の '-x c' は無効
です realgcc.exe:入力ファイルがありません
# github.com/mattn/go-gtk/gdk
realgcc. exe: 警告: 最後の入力ファイルの後の '-x c' は無効です realgcc.exe: 入力ファイルがありません
#
github.com/mattn/go-gtk/pango
realgcc.exe: 警告: 最後の入力ファイルの後の '-x c' は無効です効果
realgcc.exe: 入力ファイルがありません
終了ステータス 2

私は何を間違えましたか?go で使用する gtk を正しく設定するにはどうすればよいですか?

アップデート

Go IRC チャンネルの mb0 は非常に役に立ち、このhttps://groups.google.com/forum/?fromgroups#!topic/golang-nuts/GwbkQREiTZIを教えてくれました。

go-gtk の作成者は、どうやら go-gtk を win32 で動作させるようにしました。彼はゴーゲットを使用しませんでした。代わりに、彼は github リポジトリを GOPATH の src フォルダーにクローンし、mingw コンパイラ シェルを使用して mingw32-make を呼び出しました。

私はまったく同じことをしました: リポジトリを複製し、mingw32-make を呼び出しました。コンパイルを開始しますが、次のエラー メッセージで失敗します。

# pkg-config --cflags gtksourceview-2.0

パッケージ gtksourceview-2.0 が pkg-config 検索パスに見つかりませんでした。

おそらく、「gtksourceview-2.0.pc」を含むディレクトリを追加する必要があります

PKG_CONFIG_PATH 環境変数に

パッケージ「gtksourceview-2.0」が終了ステータスを検出しませんでした

1 mingw32-make: * [すべて] エラー 2

これは実際にいくつかの具体的なアドバイスを提供します。どうやらパッケージ構成ユーティリティがあり、重要なパッケージが見つかりません。残念ながら、これを解決する方法がわかりません。gtk Web サイトをチェックしたところ、pkg-config http://www.gtk.org/api/2.6/gtk/gtk-compiling.htmlでこの記事を見つけました。

pkg-config がパッケージのインポートの構成を担当しているように思えます。したがって、PKG_CONFIG_PATH 変数を自分で作成するのをためらっています。なぜなら、それがどこを指すべきか分からないからです。mingw shell: pkg-config --cflags gtk+-2.0 andで to shell コマンドを実行しようとしましたpkg-config --libs gtk+-2.0。1 つ目はインクルード パスのリストを表示するようで、2 つ目は利用可能なライブラリを表示するだけです。pango、cairo、gobject、pixbuf などがありますが、gtksourceview のような名前のライブラリはありません。

私の推測では、私のマシンにはこのライブラリがありません。すべての依存関係を満たすはずのオールインワンバンドルをダウンロードして解凍したので、これは私を混乱させます。

この問題を解決するにはどうすればよいですか?

4

2 に答える 2

2

それは最終的に動作します。これは、go を使用して gtk を Windows 32 ビットで動作させるための段階的なガイドです。

  • Mingw と Msys をインストールする
  • http://www.gtk.org/download/win32.phpから gtk オールインワン バンドルをダウンロードします。
  • C:\GTK に解凍します。名前は大事だと聞いたことがあります。個人的には理由が思い浮かびませんが、考えられるエラーの原因としてこれを念頭に置いておくことをお勧めします。
  • bin フォルダーをパスに追加します。これで、シェルから gtk-demo を実行できるはずです。

gtk Web サイトによると、オールインワン バンドルには gtk+ スタックとサードパーティの依存関係の両方が含まれています。ただし、Windows で go-gtk をコンパイルするには、追加のライブラリをインストールする必要があります。

gtksourceview と libxml が必要です。これらはここにあります: http://ftp.gnome.org/pub/gnome/binaries/win32/gtksourceview/2.10/ とここ: http://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies /

ダウンロードは、さまざまなフォルダーを含む zip ファイルになります。フォルダを解凍して C:\GTK にコピーする必要があります。それらを既存のものに統合するかどうかを尋ねられます。そうです。これで、すべての依存関係がダウンロードされました。

  • Mingw シェルを開き、go-gtk フォルダーに移動します。
  • 「pkg-config --cflags gtk+-2.0」を呼び出します
  • 「pkg-config --libs gtk+-2.0」を呼び出します
  • mingw32-make を呼び出す

コンパイルはうまくいくはずです。エラーが発生し、mingw がライブラリの欠落について不平を言う場合は、gtksourceview と libxml をインストールしたのと同じようにインストールできるはずです。

go-gtk をテストします

  • go src ディレクトリに新しいフォルダーを作成します。「gtktest」と名付けました
  • 新しい .go ファイルを作成します。
  • ここからサンプル コードをコピーします: http://mattn.github.io/go-gtk/
  • go build を使用して exe を作成する

これが、Windows で go と gtk を使用するのに役立つことを願っています。

于 2013-06-11T11:06:08.757 に答える
0

私はGO/WindowsでGUIフレームワークを実行しようとしていましたが、最終的にあなたの指示に従ってそれを行うことができました.

いくつか追加があります:

  • 「C:\GTK」ではなく、「C:\GTK\bin」を PATH に追加しました。
  • 3 番目の依存関係を追加する必要がありました: pthreads
  • 正しい依存関係をダウンロードするには: ファイル名に「dev」を含むファイルを毎回取得します。
  • mingw-console は C:\MinGW\msys\1.0\msys.bat にあります。
于 2014-04-01T12:41:59.690 に答える