[トップ][一覧][最近の更新]

編集履歴:差分

2009/10/13 00:23:54 JSTと2009/10/13 00:25:13 JST間のuim/2009/10/13/ffiの変更箇所

編集履歴ページに戻る

  uimのschemeから共有ライブラリにアクセスするには、
  モジュールを作って(module-load)する、という方法が用意されているのだけど、
  そもそも共有ライブラリを作成できる言語処理系でないとモジュールを作成できないし、ちょっとライブラリを試したいだけなのにファイルを作るのはめんどう。
  
  ということで、uim-trunkにlibffiにアクセスするモジュールを投入した。
  
- --with-ffiを有効にしたuimをインストールして、
+ --with-ffiを有効にした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]] リトルエンディアン32bit前提だし、ここまでくるとモジュール作ったほうがいい。まねしちゃだめ。