6

構造体ポインターを lua スクリプトに渡し、コピーなしで lua からそのメンバーに到達する方法があることを知りたいです (読み取りと書き込みの目的で)。

たとえば、ポインタを介して ac 構造体のメンバーを直接上書きすることは可能ですか?

(私はluajitを使用しています)

4

3 に答える 3

6

ティムの答えに加えて、軽いユーザーデータを使用することもできます。最終的に Lua スタックにデータのコピーが残るわけではなく、Lua にプッシュするのはポインターだけです。

Lua は、このポインターの内容、まだ有効なメモリを指しているかどうか、またはこのポインター内のオブジェクトにアクセスする方法を理解していないため、これらすべてを C で自分で処理する必要があります。私は通常、ポインターをリスト上のアイテムなので、リストからエントリが削除された可能性がある場合は、最初にリストを反復処理してポインターを検証します (リストが短い場合は大したことではありません)。Lua でポインタ内の項目にアクセスするには、Lua から呼び出すことができる get/set 関数を C で記述する必要があります。

まず、lightuserdata のプッシュと取得に関するエントリを次に示します。

于 2011-09-04T12:24:52.270 に答える
5

これを luajit 用にタグ付けしたので、(他の人が言及したように) ライト ユーザーデータを FFI と組み合わせて構造体メンバーに直接アクセスできます。こちらのチュートリアルを参照してください: http://luajit.org/ext_ffi_tutorial.html

于 2011-09-04T13:49:14.840 に答える
1

これを行う方法は、lua ユーザーデータを使用することです。いくつかの例を次に示します: link別の link

于 2011-09-04T10:47:26.087 に答える