我看过LuaJIT教程:http://luajit.org/ext_ffi_tutorial.html
我正试图深入了解Lua,并想看看在"libutility"中调用一个简单的"小写"函数有多容易
这是我想调用的C函数:
void lowercase(char* str){
int z;
for (z = 0; str[z]; z++){
str[z] = tolower(str[ z ]);
}
}
现在我想从Lua调用这个函数。。。这是我使用LuaJIT的FFI 的代码
local ffi = require("ffi")
ffi.cdef[[
void lowercase(char* str);
]]
local utility = ffi.load("utility")
local buf = ffi.new("char[?]", 11)
ffi.copy(buf, "HELLO WORLD")
utility.lowercase(buf)
print("Result: ", #str)
以上代码不起作用。。。好吧,我认为它一直工作到上面的最后一行代码。
有人能给我一些建议,告诉我如何调用这个"小写"函数并正确打印出结果吗?
试试这个:
local ffi = require("ffi")
ffi.cdef[[
void lowercase(char* str);
]]
local utility = ffi.load("utility")
local buf = ffi.new("char[?]", "HELLO WORLD")
utility.lowercase(buf)
print("Result: ", ffi.string(buf))
我根本不确定str
是什么,但tolower
会返回它的值,所以您真的想打印buf
。