如何在 Lua 中获取字符串而不是字符指针
how to get string insted of char pointer in Lua
我有一个大问题....无法解决。
我有免费的 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 的地址。请任何人帮助我理解这一刻。如何解决?
tostring
被传递给一个地址,所以给你该地址的字符串表示。您需要 ffi.string
。
local str = ffi.string(ffi.C.getString(5))
现在 str
是一个 Lua 字符串,其中包含您的 Pascal 代码返回的内容。
你的另一个可能更大的问题肯定是你在 Pascal 模块的堆上分配一个字符串,没有明显的释放它的方法。
我有一个大问题....无法解决。 我有免费的 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 的地址。请任何人帮助我理解这一刻。如何解决?
tostring
被传递给一个地址,所以给你该地址的字符串表示。您需要 ffi.string
。
local str = ffi.string(ffi.C.getString(5))
现在 str
是一个 Lua 字符串,其中包含您的 Pascal 代码返回的内容。
你的另一个可能更大的问题肯定是你在 Pascal 模块的堆上分配一个字符串,没有明显的释放它的方法。