2015-10-18 4 views
5

Squeak Foreign Function Interfaceを使用しようとしています。 私はたとえばしようとするため、新しいSqueakの5.0には適用されていないようです見つけることができたすべての情報:this page年代から派生し新しいSqueak(5.0)のSqueak FFIの構文は何ですか

add: a to: b 
    " (int) add (int a, int b) ; " 
    < cdecl: int 'add' (int a, int b) module: 'mydll'> 
    ^self externalCallFailed 

apiInvalRect: aRect 
    " (void) InvalRect (const Rect &star; badRect) ; " 
    < cdecl: void 'InvalRect' (MacRect) module: 'InterfaceLib'> 
    ^self externalCallFailed.  

は、その後、私が手を<の直後に>があるとのエラーが表示されます。

(私はそのリソースディレクトリ内SqueakFFIPrims.bundleでWindows上でSqueakの5.0を使用しています。)

+0

、あなたが何をしようとしませんでしたそれをインストールする? –

+0

@ aka.niceそうではありませんか?私は自分の画像にそのディレクトリにSqueakFFIPrims.bundleがあり、私が訪れたウェブサイトのどれもがインストールしなければならなかった情報を持っていて、squeakMapにはないことを知っていました。インストール方法を教えてもらえれば嬉しいです。また、構文エラーも解決することを願っています(プラグインが解析ルールを変更すると思いますか?) – ben

+0

通常、http:// sourceのMonticelloで最新のFFIパッケージを読み込みます.squeak.org/FFI.htmlは、 'FFI-Kernel-dtl.28.mcz' 'FFI-Tests-EstebanLorenzano.8.mcz' 'FFI-Examples-ar.1.mcz'となります。同じ仕事をするインストーラスクリプトがなければならないが、私はそれを見つける場所を覚えていないかもしれないが、おそらくgoogle ... –

答えて

3

あなたが最初のモンティセロ経由して、画像内のFFIをインストールする必要があります。

FFIパッケージは、あなたが「FFI-プール初の、そして 'FFI-カーネル' をインストールする必要がhttp://source.squeak.org/FFI.html

に位置しています。次に、 'FFI-Tests'と 'FFI-Example'を読み込むことができます。 - 彼らは暗黙のうちにSmalltalkのメソッドと同じ位置を取っている

add: a to: b 
    " (int) add (int a, int b) ; " 
    <cdecl: long 'add' (long long) module: 'mydll'> 
    ^self externalCallFailed 

あなたはパラメータ名を指定しないでください:FFIがイメージにインストールされると

、正しい構文は次のようなものになるだろう。

intをlongに置き換える必要があります。これは、サポートされている32ビットプラットフォームでも同じです。ワークスペース内

Squeakの中でFFIパッケージをロードするEDIT、あなたは(それを行う)を入力して実行することができ、この:FFIは、画像にデフォルトでインストールされていない

(Installer repository: 'http://source.squeak.org/FFI') 
    install: 'FFI-Pools'; 
    install: 'FFI-Kernel'; 
    install: 'FFI-Tests'; 
    install: 'FFI-Examples'. 
+0

です。再度、感謝します。 – ben

関連する問題