昨日のHSQL

いろいろやっているうちになんとかリンクはできるようになった。
とりあえず、前段階で何でリンクできなかったかというと、
GHCが持ってるmingwWindowsネイティブ版MySQLのライブラリが
リンクできなかったということ。
mingwに渡せるライブラリを作ることはほぼ不可能っぽいので、
DLL版のほうからインポートライブラリを作成して
ごちゃごちゃやればいけた。
というか、ここに書いてあった。
http://www.synnottsoftware.com/tutorials/mysqlwindows.php
Cygwin or mingwWindowsMySQLとリンクする方法だ。


で、リンクできたは良いものの、
connectを呼び出すと落ちる。

main.exe: internal error: resumeThread: thread not found
    Please report this as a bug to glasgow-haskell-bugs@haskell.org,
    or http://www.sourceforge.net/projects/ghc/

thread not found てどういうことやねん。
これは、

{- OPTIONS -fffi -}

#include <ghcconfig.h>

import Foreign
import Foreign.C

#include <windows.h>
#include <mysql.h>

type MYSQL = Ptr ()

foreign import ccall "mysql.h mysql_init" mysql_init :: MYSQL -> IO MYSQL

main = do
  pMySQL <- mysql_init nullPtr
  return ()

のような簡単なソースでも落ちるので、
多分GHCからmysql_initを呼び出すと起こってしまうのだろう。


こんなのどうすればいいのか、
というわけで、調べてみたら、こんな記事が見つかった。
http://www.mail-archive.com/glasgow-haskell-bugs@haskell.org/msg05881.html
投稿日二年前なんだけど。
いやいや、すぐ直すって書いてあるやん。
というか、6.2で直ってるって書いてあるのに、
6.4でも発現するというのは一体どういうこと?


さて、結局どうすればいいんだろうか。