com-1.2.3 をインストールしようとすると以下のエラーが出ました。
GHC は Gtk2Hs 動作確認の出来ている 6.10.3。
Missing header file: include/WideStringSrc.h Missing C libraries: kernel32, user32, ole32, oleaut32, advapi32
「関数型プログラミング言語Haskell Part11」に対処例がありましたので、やってみますとOKでした。
391 :デフォルトの名無しさん[sage]:2009/12/27(日) 20:50:19 Haskell から COM にアクセスしてみたく、 Cabal で com-1.2.3 をインストールしようとしたのですが、エラーが出ました。 Missing header file: include/WideStringSrc.h Missing C libraries: kernel32, user32, ole32, oleaut32, advapi32 調べてみたところ、これらのファイルがあるパスを config ファイルの extra-include-dirs と extra-lib-dirs の項に 書き込んでコメントを外せばいいのではないかと思いました。 しかし、kernel32.lib らのライブラリ ファイルはあるのですが、 WideStringSrc.h ファイルがストレージ内に見あたりません。 Windows7 sdk をフルインストールしているのですが、ありませんでした。 (インデックス作成機能を切った状態で、 エクスプローラでストレージ内に検索をかけて探しました) このファイルはどこからかダウンロードしてくるのでしょうか。 392 :デフォルトの名無しさん[sage]:2009/12/27(日) 20:59:47 com-1.2.3の中にあるでしょ? 393 :デフォルトの名無しさん[sage]:2009/12/27(日) 21:32:02 今、http://hackage.haskell.org/cgi-bin/hackage-scripts/package/com から com-1.2.3.tar.gz を落としてきて中を見てみました。 たしかにありますね。 cabal\config ファイルに次の行を書いてみました。 extra-include-dirs: C:\Users\*名前*\Desktop\com-1.2.3.tar\com-1.2.3 extra-lib-dirs: C:\Program Files\Microsoft SDKs\Windows\v7.0\Lib そして "cabal install com" を実行してみましたが、全く同じエラーが出ます。 kernel32.lib らも include/WideStringSrc.h も全てそのパスにあるのですが、 cabal は見てくれないのでしょうか。 394 :デフォルトの名無しさん[sage]:2009/12/27(日) 22:05:09 ライブラリは gcc が使うやつじゃないといけないのかと思い、 extra-lib-dirs に指定するパスを下記のものに変えてみましたが、 結果は同じでした。 C:\Program Files\Haskell Platform\2009.2.0.2\gcc-lib 395 :デフォルトの名無しさん[sage]:2009/12/27(日) 23:30:35 そのエラーはメッセージ通りじゃないケースが多いよ(↓参照) http://article.gmane.org/gmane.comp.lang.haskell.cafe/68204 cabal のオプションに -v3 とかつけると原因が分かると思う 396 :デフォルトの名無しさん[sage]:2009/12/28(月) 01:05:02 >>392,395 アドバイスありがとうございました。 おかげさまで原因がわかり、ネット上の情報も参考にして、 無事インストールできました。 "cabal install com" でダウンロード+インストールはあきらめ、 com-1.2.3.tar.gz を展開して、その中で "cabal install" しました。 そのとき、com.cabal ファイルを2ヶ所修正しました。 [1つ目] Ld-options: --enable-stdcall-fixup --disable-stdcall-fixup これはコメントアウトしました。 同じフラグの enable と disable を同時にすることに意味はないと判断しました。 [2つ目] Includes: の StdTypes.h を WideStringSrc.h の前に移動させました。 そういえばC言語のインクルードは順番が大事だったので。 1つ目の修正が何となく気持ち悪いですが、とりあえずインストールはできました。 これから実際に使ってみます。