Я нахожусь в Google около 3 часов, в поисках решения этой "проблемы". Я пытаюсь выяснить, как создать экземпляр структуры C в lisp с использованием CFFI. У меня есть структура в C:
struct cpVect{cpFloat x,y;}
Просто верно? У меня есть автоматически сгенерированные привязки CFFI (я думаю, swig) к этой структуре:
(cffi:defcstruct #.(chipmunk-lispify "cpVect" 'classname)
(#.(chipmunk-lispify "x" 'slotname) :double)
(#.(chipmunk-lispify "y" 'slotname) :double))
Это генерирует структуру "VECT" со слотами: X и: Y, что подтверждает имена внешних слотов (обратите внимание, что я не генерировал привязки и не программировал библиотеку C (физика бурундука), но фактические функции выполняются звонил с лисп просто отлично).
Я искал повсюду, и, возможно, я видел его 100 раз и закрывал его, но я не могу понять, как создать экземпляр cpVect в lisp для использования в других функциях.
Обратите внимание на функцию:
cpShape *cpPolyShapeNew(cpBody *body, int numVerts, cpVect *verts, cpVect offset)
Принимает не только cpVect, но и указатель на набор cpVects, что подводит меня ко второму вопросу: как создать указатель на набор структур?
Я был на http://common -lisp.net / project / cffi / manual / html_node / defcstruct.html и пробовал код, но получаю «Ошибка: несвязанная переменная: PTR» (я Я нахожусь в Clozure CL), не говоря уже о том, что выглядит только вернуть указатель, а не экземпляр.
Я новичок в Лиспе, до сих пор шел довольно сильно, но это первая настоящая проблема, с которой я столкнулся, которую я не могу понять. Спасибо!