我查看了LuaJIT教程:http://luajit.org/ext_ffi_tutorial.html
我想更多地了解Lua,并希望看到在C语言中用“libutility.so”调用一个简单的“小写”函数是多么容易。
所以这是我要调用的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)
上面的代码不起作用......我认为它可以工作到上面的最后一行代码。
有人可以给我一些建议,告诉我如何调用这个“小写”功能并正确打印出结果?
答案 0 :(得分:5)
试试这个:
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))
答案 1 :(得分:1)
我不确定str
是什么,但tolower
会返回它的值,所以你真的想要打印buf
。