LuaJIT, как конвертировать cdata в userdata?

Я хочу использовать LuaJIT для его способности создавать структуры и массивы в Lua. Но мои функции, которые используют данные, требуют пользовательских данных или строки (не строковое представление, просто используемое в качестве контейнера), в котором хранятся данные.

Но, глядя через API, я не вижу, возможно ли это вообще. Это?

Благодарю.

1 ответ

Решение

LuaJIT FFI не следует смешивать с классическим C/API. Хотя есть механизмы для преобразования const char* указатель на строку Lua (ffi.string), нет способа конвертировать структуру FFI в пользовательские данные Lua.

Функции FFI не знают lua_State, который необходим для создания пользовательских данных на стороне C.

Я не знаю, насколько велика ваша база привязки C / API в данный момент, но одним из решений было бы переписать ваши функции C / API в FFI, если вы настроены на использование FFI. Вы можете сделать это постепенно, убедившись, что между FFI и C / API существует четкая грань.

Другие вопросы по тегам