Fre*_*urn 5 ffi chipmunk racket
我正在尝试使用它提供的FFI在Racket中使用Chipmunk物理库.但是,我目前在实际上让FFI找到Chipmunk库中的函数时遇到了问题,即使它似乎正确地加载了库.
我正在使用最新版本的基于Windows 8和Visual Studio 2008的Chipmunk(6.1.1).我设置了"CHIPMUNK_FFI"标志,以便加载chipmunk_ffi.h文件.我正在使用"Multi-Threaded DLL"和"Build as a dll"optoins正在使用的Release DLL配置下构建代码.我使用的Racket代码如下:
#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)))
Run Code Online (Sandbox Code Playgroud)
我收到错误:
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]
Run Code Online (Sandbox Code Playgroud)
如果您需要任何进一步的信息,请告诉我.我真的很感激这方面的一些帮助.
某些函数(例如cpvadd导出为_cpvadd)。
请参阅http://code.google.com/p/chipmunk-physicals/source/browse/trunk/include/chipmunk/chipmunk_ffi.h