2012-06-03 7 views
5

Ich versuche, die Chipmunk Physik-Bibliothek in Racket zu verwenden, um die FFI verwenden, die es bietet. Allerdings habe ich noch Probleme mit tatsächlich die FFI bekommt die Funktionen in der Chipmunk-Bibliothek zu finden, auch wenn es die Bibliothek korrekt zu laden scheint.FFI Probleme mit Schläger und Chipmunk

Ich verwende die neueste Version von Chipmunk (6.1.1) unter Windows 8 mit Visual Studio 2008. Ich habe die "CHIPMUNK_FFI" -Flag gesetzt, so dass die chipmunk_ffi.h Datei geladen ist. Ich baue den Code unter der Release-DLL-Konfiguration mit „Multi-Threaded-DLL“ und „Build als DLL“ optoins verwendet wird. Der Schläger Code ich verwende ist wie folgt:

#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))) 

Und ich erhalte die Fehlermeldung:

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] 

Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen. Ich würde wirklich eine Hilfe mit diesem schätzen.

+1

BTW, sollten Sie wirklich versuchen, die [Mailingliste] (http://lists.racket-lang.org/users/) - Ich denke, dass Jay mit Glue Code spielte für dieses oder einige andere Physik-Engine, so vielleicht können Sie anfangen, wo er aufgehört ... –

Antwort