假设我有这个 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())
The ffi.string http://luajit.org/ext_ffi_api.html#ffi_string函数显然可以完成您正在寻找的转换。
function mymodule.get_str()
local c_str = ffi.C.GetStr()
return ffi.string(c_str)
end
如果您遇到崩溃,请确保您的 C 字符串以 null 结尾,并且在您的情况下最多有 31 个字符(以免溢出其缓冲区)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)