racket - Racket 和花栗鼠的 FFI 问题

标签 racket ffi chipmunk

我正在尝试使用它提供的 FFI 在 Racket 中使用 Chipmunk 物理库。但是,我目前在实际获取 FFI 以查找 Chipmunk 库中的函数时遇到问题,即使它似乎正确加载了库。

我使用的是基于 Windows 8 和 Visual Studio 2008 的最新版本的 Chipmunk (6.1.1)。我设置了“CHIPMUNK_FFI”标志,以便加载chipmunk_ffi.h 文件。我正在使用“多线程 DLL”和“构建为 dll”选项在 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)))

我收到错误:
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]

如果您需要任何进一步的信息,请告诉我。我真的很感激这方面的一些帮助。

最佳答案

关于racket - Racket 和花栗鼠的 FFI 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10872648/

相关文章:

documentation - 我如何制作涂鸦 - 是两个短破折号而不是一个长破折号?

rust - 夹在一生和 FFI 之间

python - pymunk - 如何限制移动?

web-applications - 有没有办法让 Racket Web 应用程序中的按钮调用文件中定义的函数?

racket - 您如何获得 DrRacket 中的有用工具?

racket - 欧拉计划 #50,素数和不正确?

rust - Rust 中处理 C 头文件的自动工具?

rust - 如何将 Rust 闭包转换为 C 风格的回调?

iphone - 花栗鼠碰撞检测