LuaJit FFI возвращает строку из функции C в Lua?
Скажем, у меня есть такая функция C:
__declspec(dllexport) const char* GetStr()
{
static char buff[32]
// Fill the buffer with some string here
return buff;
}
И этот простой модуль Lua:
local mymodule = {}
local ffi = require("ffi")
ffi.cdef[[
const char* GetStr();
]]
function mymodule.get_str()
return ffi.C.GetStr()
end
return mymodule
Как я могу получить возвращенную строку из функции C в виде строки Lua здесь:
local mymodule = require "mymodule"
print(mymodule.get_str())
1 ответ:
ffi.string
функция, по-видимому, выполняет преобразование, которое вы ищете.function mymodule.get_str() local c_str = ffi.C.GetStr() return ffi.string(c_str) end
Если вы получаете сбой, то убедитесь, что ваша строка C завершается null и в вашем случае имеет не более 31 символа (чтобы не переполнять буфер).