案外ハマる。ハマりどころは3つ
- System.Data.SQLiteでよく使うスキーマ調査用のsqlite3_column_database_name は、Mac OS X向け標準ビルドのSQLiteに含まれない
- Monoは今のところ(3.0.3時点)Mac向けに32bitバイナリしか提供していないし、32bitバイナリから64bitビルドされたライブラリのロードは出来ない
- MonoのDLL検索は(DllMapを定義していない限り)libsqlite3.0.dylibとなる(Windows環境から類推されるlibsqlite3.dylibとかではない。ちなみにサフィックスは .dylib, .dylib.so, .dylib.bundleを探してくれる)
対応方法はこんな感じ。
からソースを拾ってきて展開。
$ ./configure CFLAGS="-DSQLITE_ENABLE_COLUMN_METADATA -m32"
$ make
で得られる.lib/libsqlite3.0.dylib を適当な場所へコピーするか、make installしてよしなにする。
SQLiteのソース読まないと案外気付かないところでハマったハマった(ノ∀`)