Я был в google около, о, 3 часа ищет решение этой «проблемы». Я пытаюсь понять, как создать экземпляр структуры C в lisp с помощью CFFI. У меня есть структура в c:Общие lisp, CFFI и создание экземпляров c structs
struct cpVect{cpFloat x,y;}
Простое право? У меня автоматически сгенерированное CFFI привязки (SWIG, я думаю) к этой структуре:
(cffi:defcstruct #.(chipmunk-lispify "cpVect" 'classname)
(#.(chipmunk-lispify "x" 'slotname) :double)
(#.(chipmunk-lispify "y" 'slotname) :double))
Это порождает STRUCT «Vect» со слотами: X и: Y, которые в иностранном игральных именах подтверждают (Пожалуйста, обратите внимание, что Я не создавал привязки или не программировал библиотеку C (физика бурундук), но фактические функции вызывают из lisp просто отлично).
Я искал широко и, возможно, видел его 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), не говоря уже о том, что выглядит только для возврата указателя, а не экземпляра.
Я новичок в lisp, до сих пор довольно силен, но это первая реальная проблема, с которой я столкнулся, я не могу понять. Благодаря!
выделить с FOREIGN-ALLOC? –
Работы для коллекций указателей ... половина проблемы. Спасибо!! – andrew