2012-06-03 11 views
5

Sto cercando di utilizzare la libreria fisica Chipmunk nel Racket utilizzando la FFI che essa fornisce. Tuttavia, attualmente sto riscontrando problemi con il fatto che FFI trovi le funzioni nella libreria Chipmunk, anche se sembra che la libreria sia stata caricata correttamente.Problemi FFI con la racchetta e Chipmunk

Sto utilizzando la versione più recente di Chipmunk (6.1.1) creata su Windows 8 con Visual Studio 2008. Ho il flag "CHIPMUNK_FFI" impostato in modo che il file chipmunk_ffi.h sia caricato. Sto costruendo il codice sotto la configurazione di Release DLL con optoins "Multi-Threaded DLL" e "Build as a dll" in uso. Il codice Racket che sto usando è la seguente:

#lang scheme 

(require ffi/unsafe 
     ffi/unsafe/define) 

(define chipmunk (ffi-lib "./chipmunk")) 
(define-ffi-definer define-chipmunk chipmunk) 

(define _cpFloat _double) 
(define cpFloat? real?) 
(define _cpDataPointer _pointer) 
(define _size_t _ulong) 
(define _cpHashValue _size_t) 

(define-cstruct _cpVect 
       ([x _cpFloat] 
       [y _cpFloat])) 

(define cpv 
    (get-ffi-obj "cpvadd" chipmunk (_fun _cpVect _cpVect -> _cpVect))) 

E sto ottenendo l'errore:

ffi-obj: couldn't get "cpvadd" from "chipmunk.dll" (The specified procedure could not be found.; errno=127) 

=== context === 
C:\Program Files (x86)\Racket\collects\ffi\unsafe.rkt:180:2: get-ffi-obj* 
C:\Users\me.000\AppData\Roaming\Racket\planet\300\5.2.1\cache\jaymccarthy\chipmunk.plt\1\0\chipmunk-ffi-new.ss: [running body] 
C:\Users\me.000\AppData\Roaming\Racket\planet\300\5.2.1\cache\jaymccarthy\chipmunk.plt\1\0\chipmunk-new.rkt: [traversing imports] 
C:\Users\me.000\AppData\Roaming\Racket\planet\300\5.2.1\cache\jaymccarthy\chipmunk.plt\1\0\main.rkt: [traversing imports] 
C:\Users\me.000\Dropbox\Code\workspace-racket\learning\main.rkt: [traversing imports] 

Fatemi sapere se avete bisogno di ulteriori informazioni. Gradirei davvero un aiuto in questo.

+1

BTW, si dovrebbe davvero provare il [mailing list] (http://lists.racket-lang.org/users/) - Credo che Jay ha giocato con il codice di colla per questo o qualche altro motore di fisica, quindi forse puoi iniziare da dove ha lasciato ... –

risposta