Скажем, у меня есть эта функция C:LuaJit FFI Возвращает строку от функции C до Lua?
__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())
Что вы получаете, как сейчас? Что делает этот код, который вам не нужен? –
В настоящее время, когда я печатаю, я получаю 'cdata: 0x00000001' вместо строки. Из документации я должен использовать 'ffi.string (buff [, len])' для получения фактической строки. Но когда я делаю это, приложение падает. –
Показать вызов 'ffi.string', который вы пытались, и обратную трассировку/etc. от аварии. В идеале также код, который заполняет строку. –