GTKで作るアプリ最初の一歩(GTKで遊ぶ第2回) | ハッピーコンピューティングのブログ

ハッピーコンピューティングのブログ

東京都小平市の小さなプログラミング教室のブログです。

WindowsのVisual Studio Community 2019 でGTKのビルドができました。

せっかくなので動かしてみたいと思います。

 

gtk本家のトップページにサンプルコードが載っていますが

 

なんの説明もなしにいきなりこれをコピペするといろいろ困難が待ち受けているので

 

いったん下記のTARNYKOさんのページのチュートリアルがおすすめです。

これをやりましょう。

 

(1)サンプルファイルダウンロード

下記赤丸のリンクを右クリック、名前を付けてリンク先を保存してください。

"gtk3test.c" というファイルが保存できるはずです。

 

(2)VisualStudio2019で新しいプロジェクトを作る

VisualStudio2019を立ち上げて「新しいプロジェクトの作成」をクリック。
 
「空のプロジェクト」をクリックして「次へ」
 
プロジェクト名はなんでもいいんですが(1)でダウンロードしてきたファイル名に倣って、「gtk3test」とでもしておきましょう。
プロジェクト名以外はそのままで「作成」ボタンをクリック。
 
無事にプロジェクトができました。
 

(3)ソースコードをプロジェクトへ組み込む

ソリューションエクスプローラの中の「gtk3test」プロジェクトを右クリックし、「エクスプローラーでフォルダを開く」をクリック。
 
開いたフォルダ内に(1)でダウンロードした「gtk3test.c」ファイルを移動する。
 
ソリューションエクスプローラー内の「ソースファイル」フォルダを右クリックし、「追加」→「既存の項目」をクリック。
 
出てきたダイアログで「gtk3test.c」を追加する。
 
無事に追加された「gtk3test.c」をクリックしてソースコードを表示する。
 

(4)プロジェクト設定(インクルードとライブラリとか)

ソリューションエクスプローラの「gtk3test」プロジェクトを右クリックし「プロパティ」をクリック。
 
プロジェクトのプロパティページで、
構成 : すべての構成
プラットフォーム : x64
構成のプロパティ → C/C++ → 全般の中の「追加のインクルードディレクトリ」を編集する。
 
下記行を追加して「OK」をクリック。
先日の記事の通りにGTKをビルドすればこのパスになるはずです。
違うディレクトリでビルドした場合は適宜変えてください。
  • C:\gtk-build\gtk\x64\release\include\pango-1.0
  • C:\gtk-build\gtk\x64\release\include\gtk-3.0
  • C:\gtk-build\gtk\x64\release\lib\glib-2.0\include
  • C:\gtk-build\gtk\x64\release\include\glib-2.0
  • C:\gtk-build\gtk\x64\release\include\gdk-pixbuf-2.0
  • C:\gtk-build\gtk\x64\release\include\cairo
  • C:\gtk-build\gtk\x64\release\include\atk-1.0
  • C:\gtk-build\gtk\x64\release\include\harfbuzz
 
プロジェクトのプロパティページで、
構成のプロパティ → リンカ → 「全般」の中の「追加のライブラリディレクトリ」に「C:\gtk-build\gtk\x64\release\lib;」を書いておく。
先日の記事の通りにGTKをビルドすればこのパスになるはずです。
違うディレクトリでビルドした場合は適宜変えてください。
 
プロジェクトのプロパティページで、
構成のプロパティ → リンカ →「入力」の中の「追加の依存ファイル」を「編集」
 
下記2つを入力してOKをクリック。
  • gobject-2.0.lib
  • gtk-3.0.lib
 
 
プロジェクトのプロパティページで、
構成のプロパティ → C/C++→「コマンドライン」の中の「追加のオプション」欄に「-Dinline=」と書いておく。
TARNYKOさんによると、Visual C++はinlineディレクティブを理解しないからこれを書いておくのだそうです。へー。
 

(5)GTKにパスを通す(環境変数)

Tarnykoさんのチュートリアルによればここで「F5」キーを押してビルド、実行すればいい!ってことになっています。
構成を「Debug」「x64」に設定して、言われた通り「F5」キーを押してください。
 
コンパイルエラーもリンクエラーもありませんが、実行時のエラーになりました。

 
原因はGTKにパスを通していないためです。
Windowsのスタートボタンをクリックして「環境変数」と文字を打ち込めば「システム環境変数の編集」を開くことができます。
 
 
システムのプロパティダイアログで「詳細設定」タブにある「環境変数」ボタンをクリック
 
システム環境変数の「Path」をクリックして編集ボタンを押す。
 
「新規」ボタンを押して「C:\gtk-build\gtk\x64\release\bin」を入力する。
先日の記事の通りにGTKをビルドすればこのパスになるはずです。
違うディレクトリでビルドした場合は適宜変えてください。
このままだと最下行に入りますが、これを選択したまま「上へ」ボタンを連打し、一番上まで持ってきてから「OK」ボタンを押してください。
 
 
この時、一番上まで持ってきていないと、下記のようなエラーが出る場合があるようです。
プロシージャエントリポイント fooがダイナミックリンクライブラリ bar.dllから見つかりませんでしたってなんのこっちゃ?ですが
パスの設定でGTKを最後にしていると、システムにすでにインストールされている別のライブラリがリンクされてしまうために発生するバグのようです。
環境変数PATHにおいて、GTKが最初に(一番上に)くるようにしておけば正しいライブラリをリンクしてくれます。
 

(5)環境変数PATHの適用のためにVisualStudioを立ち上げなおす

PATHを反映させるためにはVisualStudioの再起動が必要です。再起動してまたこのソリューションファイルを開いてください。
 

(6)「F5」キーで実行

F5キーを押してビルド、実行してみてください。
小さなGUIアプリケーションが表示されたでしょうか。
 
見た目があんまりかっこよくないなとか、同時に開いているコンソールウィンドウにWarningが出ているじゃないかとか
ツッコミどころはありますが、次回以降コツコツ解決していきましょう。
ひとまず初めてのGTKアプリケーションの作成が終わりました。
お疲れさまでした。