【问题标题】:LuaJIT & FFI: How to use char* properly?LuaJIT & FFI:如何正确使用 char*?
【发布时间】:2011-06-25 01:37:33
【问题描述】:

我看过 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)

上面的代码不起作用......我认为它直到上面的最后一行代码才起作用。

谁能给我一些建议,告诉我如何调用这个“小写”函数并正确打印出结果?

【问题讨论】:

    标签: lua


    【解决方案1】:

    试试这个:

    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))
    

    【讨论】:

      【解决方案2】:

      我完全不确定str 是什么,但tolower 会返回它的值,所以你真的想打印buf

      【讨论】:

        猜你喜欢
        • 2019-09-21
        • 1970-01-01
        • 1970-01-01
        • 2016-08-11
        • 2011-08-20
        • 2011-08-07
        • 1970-01-01
        • 2012-09-01
        • 2016-06-04
        相关资源
        最近更新 更多