TinyCCを使う(5)
Squeakから共有ライブラリ構築を行うクラスの動作確認メモ。
リストからFFI呼び出しメソッドを作成
| lib | lib := SharedLibraryBuilder new. lib pluginName: 'libfoo'. lib targetClass: 'Foo'. lib addFunctionArray: #('int' 'foo' 'int,int'). lib buildFFICaller.
実行結果:
primfoo: t1 with: t2 <cdecl: long 'foo' (long long ) module:'libfoo'> ^self externalCallFailed
リストから#compile:でメソッドを登録しているんですが、あまりうまくないですね。いい方法さがしています。
Squeakから共有ライブラリ構築
TinyCCを使って共有ライブラリを作るSharedLibraryBuilderの動作確認
| lib | lib := SharedLibraryBuilder new. lib sourceCode: ' int foo(int t1, int t2) { return t1+t2; }'. lib compile. lib newFileNamed: 'libfoo.so'. lib delete.
実行結果:
> ls -l libfoo.so -rwxr-xr-x 1 kawa90 kawa90 2664 2007-01-20 08:43 libfoo.so > file libfoo.so libfoo.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped
まとめ
現段階ではFFI呼び出し部分を作成するのに関数リストを与える必要があったりで、使い勝手が悪い。まぁ徐々に直していきます。