我已经在谷歌上搜索了大约,哦,三个小时,寻找这个“问题”的解决方案。我试图弄清楚如何使用 CFFI 在 lisp 中实例化 C 结构。我在 c 中有一个结构:
struct cpVect{cpFloat x,y;}
简单吧?我已经自动生成了到此结构的 CFFI 绑定(我想是 swig):
(cffi:defcstruct #.(chipmunk-lispify "cpVect" 'classname)
(#.(chipmunk-lispify "x" 'slotname) :double)
(#.(chipmunk-lispify "y" 'slotname) :double))
这会生成一个带有插槽 :X 和 :Y 的结构“VECT”,外国插槽名称确认了这一点(请注意,我既没有生成绑定也没有编写 C 库(花栗鼠物理),但实际的函数是从 lisp 调用的正好)。
我进行了广泛的搜索,也许我已经看过它 100 次并掩盖了它,但我无法弄清楚如何在 lisp 中创建 cpVect 实例以在其他函数中使用。
注意函数:
cpShape *cpPolyShapeNew(cpBody *body, int numVerts, cpVect *verts, cpVect offset)
不仅需要一个 cpVect,还需要一个指向一组 cpVect 的指针,这引出了我的第二个问题:如何创建指向一组结构的指针?
我去过http://common-lisp.net/project/cffi/manual/html_node/defcstruct.html http://common-lisp.net/project/cffi/manual/html_node/defcstruct.html并尝试了代码,但得到“错误:未绑定变量:PTR”(我在 Clozure CL 中),更不用说看起来只返回一个指针,而不是一个实例。
我是 lisp 的新手,到目前为止已经很强大了,但这是我遇到的第一个真正的问题,我无法解决。谢谢!