私は、luaスクリプトへの構造体ポインタ を渡し、それをluaのメンバーに渡します(読み書きのために)。luaスクリプトへのC構造体ポインタの受け渡し
例えば、c構造体のメンバを直接ポインタで上書きすることは可能ですか?これを行うには
(私はluajitを使用しています)
私は、luaスクリプトへの構造体ポインタ を渡し、それをluaのメンバーに渡します(読み書きのために)。luaスクリプトへのC構造体ポインタの受け渡し
例えば、c構造体のメンバを直接ポインタで上書きすることは可能ですか?これを行うには
(私はluajitを使用しています)
luajitにタグを付けているのを見て、他の人の言葉で述べたように軽いユーザーデータをFFIに結合することができます。http://luajit.org/ext_ffi_tutorial.html
方法は、Luaのユーザデータです。いくつか例があります:link、another link。
ティムの答えに加えて、のライトのユーザーデータに行くことができます。あなたはLuaスタック内のデータのコピーで終わることはありません。あなたがLuaにプッシュするのはポインタです。
Luaはこのポインタに何が入っているのか、まだ有効なメモリを指しているのか、このポインタのオブジェクトにアクセスしているのかを理解していないので、Cで自分自身をすべて処理する必要があります。リスト内の項目へのポインタを送信するので、リストから項目が削除されてしまうリスクがある場合は、最初にリストを反復してポインタを検証します(リストが短い場合は大きな問題ではありません)。 Luaでポインタ内の項目にアクセスするには、Cでget/set関数を記述して、Luaから呼び出す必要があります。ポインタ値
はここlightuserdataを押して取り出すのエントリがあり、開始するには軽いユーザーデータ
ああ、うわー。私はこれについて知らなかった。あなたがルワジットを使っているなら、これは絶対に行く方法です。 –