我已经在谷歌上搜索了大约 3 个小时来寻找这个“问题”的解决方案。我试图弄清楚如何使用 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”,foreign-slot-names 确认了该结构(请注意,我既没有生成绑定也没有编写 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并尝试了代码,但得到“错误:未绑定变量:PTR”(我在 Clozure CL),更不用说看起来只返回一个指针,而不是一个实例。
我是lisp的新手,到目前为止一直很强大,但这是我遇到的第一个真正的问题,我无法弄清楚。谢谢!