2002-08-21 [長年日記]
λ. atk-1.0.4
atkがスタティックライブラリになってしまっているのに気がついた。理由はわからないが「libtool: link: warning: undefined symbols not allowed in i586-pc-cygwin shared libraries」というメッセージを見ると、何かシンボルが欠けているのかとも思う。しかし、直接dllwrapを使うと普通にDLLを作れるようなので、これをインストールしとこ。(8/31に追記あり)
ところで、dllwrapで--defを指定せずに作ったDLLには、impgenがうまく動作しないようだ。
λ. gtk+-2.0.6
cyggtk-win32-2.0-0.dllをビルドしようとしたら以下のようなエラーメッセージが出てしまった。auto-importは比較的新しい機能でよく知らないので使わないことを考える。gdktypes.hではG_OS_WIN32の時にしか「__declspec(dllimport)」が付かなくなっていたので、この条件をG_PLATFORM_WIN32に書き換えて試したら、うまくいった。
fu000001.o(.idata$3+0xc): undefined reference to `libimp_cyggdk_win32_2_0_0_a_iname' fu000002.o(.idata$3+0xc): undefined reference to `libimp_cyggdk_win32_2_0_0_a_iname' fu000003.o(.idata$3+0xc): undefined reference to `libimp_cyggdk_win32_2_0_0_a_iname' fu000004.o(.idata$3+0xc): undefined reference to `libimp_cyggdk_win32_2_0_0_a_iname' fu000005.o(.idata$3+0xc): undefined reference to `libimp_cyggdk_win32_2_0_0_a_iname' fu000006.o(.idata$3+0xc): more undefined references to `libimp_cyggdk_win32_2_0_0_a_iname' follow nmth000000.o(.idata$4+0x0): undefined reference to `_nm__gdk_threads_mutex' Info: resolving _gdk_threads_mutex by linking to __imp__gdk_threads_mutex (auto-import) collect2: ld returned 1 exit status
次に、適当なサンプルをビルドしようとすると、gtkをリンクする段階で「simple.o(.text+0xe5):simple.c: undefined reference to `gtk_init_abi_check'」等と言われてしまう。gtkmain.hでは「#ifdef G_PLATFORM_WIN32」を使ってるのに、gtkmain.cでは「#ifdef G_OS_WIN32」を使っているのが原因。#91649 アホらしくてやってられないね。gtkmain.cの方を直すのが筋なんだろうけど、gtkをリンクしなおすのが面倒なのでgtkmain.hの方を修正。
これでもう大丈夫だろうと思い、gtk+-2.0.6/examples/filesel辺りを試しにコンパイル実行してみると、以下のように言われてしまった。
bash-2.05b$ ./filesel.exe ** (filesel:4063781): WARNING **: Couldn't load font "Sans 10" falling back to "Sans 10" ** (filesel:4063781): WARNING **: Couldn't load font "Sans 10" falling back to "Sans 10" ** (filesel:4063781): WARNING **: All font failbacks failed!!!!
このメッセージを出しているのはpango-fontmap.c。問題があるとしたらpangowin32-fontmap.cか? それともgtkrc-2.0ファイルに関する問題だろうか? gtk+側の問題かpangoの問題かを切り分けるうまい方法はないかな?
そろそろお手上げ気味かも……
λ. 個人向け国債を非課税に、財務省検討
せこいのう。
λ. return
そういえばHaskellのreturnって関数なんだよなぁ……