1

ポインターとして返す C の要素 (動的) の配列があります。

ポインターを使用して、これらの配列要素の値を読み取る必要があります。

Cからポインタにアクセスし、Luaで値を取得する機能はありますか?

4

2 に答える 2

5

このポインターをユーザーデータにラップし、アクセサー メソッドを記述できます (複雑さ: 高)。より簡単な解決策は、その配列を通常の Lua テーブルに変換することです。

size_t arr_size = 10;
int arr[10] = { 0 };

lua_getglobal(L, "testfunc");

lua_createtable(L, arr_size, 0);
for (size_t i = 0; i < arr_size; i++) {
    lua_pushinteger(L, arr[i]);
    lua_rawseti(L, -2, i+1);
}
// the table is at top of stack

lua_call(L, 1, 0); // call testfunc(t)
于 2013-05-10T10:34:31.980 に答える
3

Lua には、C で知られているような配列の概念がありません。

C ポインターを Lua に返すことは、通常、不透明なuserdataオブジェクトの形式で行われます。これは、具体的なデータを取得するために、追加で公開された関数に渡すことができます。

local array = your_function_returning_a_pointer();
assert(type(array) == "userdata");

local index = 1;
local obj = get_object_from_array(array, index);

または、オブジェクトのテーブルを返す関数を Lua に公開します。

local objects = your_function_now_returning_a_table();
assert(type(objects) == "table");

local index = 1;
local obj = objects[1];
于 2013-05-10T10:35:18.983 に答える