2015-10-18 38 views
5

Squeak FFI için sözdizimi nedir Squeak Yabancı İşlev Arabirimi kullanmaya çalışıyorum. Ben örneğin çalıştığınızda çünkü yeni Squeak 5.0 için geçerli görünmüyor bulabildim tüm bilgiler: this page 's türetilmiştirYeni Squeak (5.0)

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.  

sonra olsun >< hemen sonra beklediği hata.

(Ben onun kaynaklar dizininde SqueakFFIPrims.bundle ile Windows üzerinde Squeak 5.0 kullanıyorum.)

+0

FFI görüntüde varsayılan olarak yüklü değildir, sen bir şey denedin mi yükle? –

+0

@ aka.nice Bu değil mi? Ben sadece benim görüntünün kendi dizininde bir SqueakFFIPrims.bundle olduğunu gördüm ve ben ziyaret ettiğim web siteleri hiçbiri yüklü olması gerektiğini (ve nasıl?), Ayrıca squeakMap içinde herhangi bir bilgi vardı. Bunu nasıl kuracağınızı söylerseniz çok sevinirim ve umarım bu sözdizimi hatası da çözer (eklentinin ayrıştırma kurallarını da değiştirdiğini tahmin ediyorum) – ben

+0

Genellikle en son FFI paketlerini http: // kaynaktan Monticello ile yüklerim .squeak.org/FFI.html 'FFI-Kernel-dtl.28.mcz' 'FFI-Tests-EstebanLorenzano.8.mcz' 'FFI-Örnekleri-ar.1.mcz' olacaktır. Aynı işi yapan bazı Installer betikleri olmalı, ama nerede bulacağımı hatırlamıyorum, belki google ... –

cevap

3

Sen Monticello aracılığıyla, görüntüdeki FFI yüklemeniz gerekir.

FFI paketi Sen 'FFI-Havuzlar', ardından 'FFI-Kernel' yüklemeniz gerekir http://source.squeak.org/FFI.html

yer almaktadır. Sonra 'FFI-Tests' ve 'FFI-Example' yükleyebilirsiniz. - örtük smalltalk yöntemi olarak aynı pozisyonda alıyor

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

Sen parametre adları belirtilmez: FFI görüntüde kurulduktan sonra

, doğru sözdizimi böyle bir şey olurdu.

Int yerine uzunca bir şey değiştirmeniz gerekiyor - desteklenen 32 bitlik platformlarda da aynı. Bir çalışma alanında bu Squeak içinde FFI paketini yüklemek için

DÜZENLEME yazabilirsiniz ve (bunu) yürütün:

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

Çalışmaları. Tekrar teşekkürler. – ben