如何在Lua中获取char指针的字符串

时间:2016-09-28 07:08:30

标签: lua freepascal lua-table ffi

我有一个大问题....无法解决它。 我有免费的pascal程序和lua脚本。

function getString(i:integer):PChar;public; stdcall;
begin
//something to do 
Result:=strnew(PChar('newString'));
end

通过传递注册函数,有Lua实现

ffi.cdef
[[
char*__stdcall getString(i:integer);
]]
local str =ffi.C.getString(5)
print (tostring(str))

而不是'newString'我得到了cdata的地址。请有人帮我理解这一刻。怎么解决?

1 个答案:

答案 0 :(得分:0)

tostring正在传递一个地址,因此为您提供该地址的字符串表示形式。您需要ffi.string代替。

local str = ffi.string(ffi.C.getString(5))

现在str是一个Lua字符串,包含Pascal代码返回的内容。

你的另一个可能更大的问题肯定是你在Pascal模块的堆上分配一个字符串而没有明显的解除分配方法。