私は約3時間、この "問題"の解決策を探していました。私はCFFIを使ってLispでC構造体をインスタンス化する方法を理解しようとしています。私はCで構造体を持っています:一般的なlisp、CFFI、インスタンス化のC構造体
struct cpVect{cpFloat x,y;}
シンプルな権利ですか?これは、スロットを備えた構造体「VECT」を生成
(cffi:defcstruct #.(chipmunk-lispify "cpVect" 'classname)
(#.(chipmunk-lispify "x" 'slotname) :double)
(#.(chipmunk-lispify "y" 'slotname) :double))
:Xと:Y、外国スロット名の確認は、(ことに注意してください私は、自動生成されたCFFIのこの構造体へのバインディングを(SWIGが、私は思う)持っています私はバインディングを生成したり、Cライブラリ(chipmunk physics)をプログラムしていませんが、実際の関数はちょうど良いlispから呼び出されています。
私はそれを100回見て、それを見てきたかもしれませんが、他の機能で使用するためにlispでcpVectのインスタンスを作成する方法を理解できません。
注機能:
cpShape *cpPolyShapeNew(cpBody *body, int numVerts, cpVect *verts, cpVect offset)
だけでなくcpVectがかかりますが、また私の2番目の質問に私をもたらしますcpVectsのセットへのポインタ:どのように私は、構造体のセットへのポインタを作成します?
http://common-lisp.net/project/cffi/manual/html_node/defcstruct.htmlに行ってコードを試しましたが、「エラー:バインドされていない変数:PTR」(私はClozure CLにあります)を取得しました。
私は、これまでかなり強くなっていますが、これは私が理解できない最初の本当の問題です。ありがとう!
FOREIGN-ALLOCで割り当てますか? –
ポインタを収集するための作業...問題の半分。ありがとうございました!! – andrew