HelloWorldのソースコードがコンパイルできなかったログ。
前回まで
前回、WindowsXPでGTKmm3のコンパイルができたっぽい。
こちらでは最後にDLLができたらしい(gtkmm-3.6.0-win32.7z)。
これと同じようなDLLができていた。
C:\MinGW\msys\1.0\gtkmm3\bin
のパスに。
ただ、libgiomm-2.4-1.dll
はできなかった。
こちらの手順でダウンロードした中にはgiommがなかったからか。
とりあえずgiommは放置して、コンパイルできるか試した。
コンパイル
参考
http://d.hatena.ne.jp/propella/20080215/p1
http://onoono-life.blogspot.jp/2013/11/cc-hello-world-gtk.html
バッチファイル
ほぼ参考のをコピペ。
:: http://onoono-life.blogspot.jp/2013/11/cc-hello-world-gtk.html
set gcc="C:\MinGW\bin\gcc.exe"
set pkgconfig="C:\MinGW\msys\1.0\gtkmm3\lib\pkgconfig"
:: %gcc% hello.c `pkg-config --cflags --libs gtk+-3.0`
%gcc% -o hello.c -mwindows `pkg-config --cflags --libs gtk+-3.0`
pause
エラーが出た。
gcc.exe: エラー: `pkg-config: No such file or directory
gcc.exe: エラー: gtk+-3.0`: No such file or directory
gcc.exe: エラー: 認識できないオプション '--cflags' です
gcc.exe: エラー: 認識できないオプション '--libs' です
gcc.exe: 致命的エラー: 入力ファイルがありません
コンパイルを停止しました。
Windowsのコマンドプロンプトはバッククォートに対応していない
というわけで、makeファイルを書いて実行。
hello: hello.c
gcc -o hello.exe -mwindows `pkg-config --cflags --libs gtk+-win32-3.0`
# gcc -o hello.exe -mwindows `pkg-config --cflags --libs gtk+-3.0`
# gcc -o hello.exe `pkg-config --cflags --libs gtk+-3.0`
gcc
の前はスペースでなくTABでないとダメらしいので注意。
実行と結果
>"C:\MinGW\bin\mingw32-make.exe" -f "Makefile"
gcc -o hello.c `pkg-config --cflags --libs gtk+-3.0`
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libmingw32.a(main.o): In function
`main':
C:\MinGW\msys\1.0\src\mingwrt/../mingw/main.c:73: undefined reference to `WinMai
n@16'
collect2: ld はステータス 1 で終了しました
mingw32-make: *** [hello] Error 1
WinMain参照エラー
ようするに以下のエラーが出でコンパイルできない。
C:\MinGW\msys\1.0\src\mingwrt/../mingw/main.c:73: undefined reference to
WinMain@16'`
- ググったら
-mwindows
引数が不要とか必要とか見つけたが、つけてもはずしても同じエラーだった #include<windows.h>
をソースコードに追記しても同様のエラーだった
「C:...mingw/main.c:73行目で、未定義のWinMain@16
関数を参照した」というエラーだと思う。
たぶん、gtkmm3がWinMain関数を実装している。
でも、WinMain関数の定義が見つからない。ということか?
具体的にどうすればいいのやら…。
わからないことだらけ
- そもそもDLL吐き出したらそれで終わりなのか?gtkmm3が動く環境にできたのか?
- WinMainエラーはVC++でいうリンクエラーのことか?
- でも、そういうのは
pkg-config --cflags --libs gtk+-3.0
とやらでうまいことやってくれるのでは? - というか、
pkg-config --cflags --libs gtk+-3.0
って何? - gccの使い方さっぱりわからん
こういうときは、とりあえず動く最小限の実物(コード)がほしい。 そこからチマチマ変更したりしていると、少しずつ理解できる。
ごちゃごちゃした理屈はぜんぶ後回しでいい。 でも、ごちゃごちゃしたものを把握せねば、動くまでこぎつけられない。 何をどうしていいかわからないから、諦めてしまう。 今、そういうところにいる。ここまできて…。
HelloWorldが一番大事。できないとはじめられない。 一体gtkmm3をはじめるのにどれだけの予備知識が必要なんだ?
所感
コピペプログラマーの限界か。
でも、わからないことがヒントになっているはず。 少しは自分でいろいろファイルを漁ったりしてみるか。
gtkmmを使わずにコンソールアプリでHelloWorldするとか、まだいろいろ確認できることはあるはず。