Content of uim/2009/10/13/ffi at 2009/10/13 00:27:26 JST
View diff from current version
uimのschemeから共有ライブラリにアクセスするには、 モジュールを作って(module-load)する、という方法が用意されているのだけど、 そもそも共有ライブラリを作成できる言語処理系でないとモジュールを作成できないし、ちょっとライブラリを試したいだけなのにファイルを作るのはめんどう。 ということで、uim-trunkにlibffiにアクセスするモジュールを投入した。 [http://sources.redhat.com/libffi/ libffi]をインストール後、 --with-ffiでconfigureしたuimをインストールすれば、 uim-shから、 {{{ uim> (module-load "ffi") uim> (define libm (dlopen "libm.so" (assq-cdr '$RTLD_LAZY (dlopen-mode)))) uim> (define atan (dlsym libm "atan")) uim> (ffi-call 'double atan '((double . "1.0"))) ;; => pi/4 uim> (dlclose libm) }}} とかできる。 もちろん引数の数や型を間違えると即死するので注意が必要。 - 無茶な例: [[gist:207980]] リトルエンディアンの32bitCPU前提だし、ここまでくるとモジュール作ったほうがいい。まねしちゃだめ。