【问题标题】:dynamic ffi function calling in lualua中的动态ffi函数调用
【发布时间】:2014-05-22 21:13:37
【问题描述】:

我们可以从字符串动态创建一个函数并调用 ffi.C 绑定吗? 示例:

ffi.cdef [[

void foo_bar_A_get_info(void);
void foo_bar_B_get_info(void);

]]

some = ffi.load("some.so")
function call_fun(var)
    -- var can be A or B
    some.foo_bar_var_get_info()
end

call_fun("A")
call_fun("B")

我收到错误:缺少符号“foo_bar_var_get_info”的声明

我在网上搜索了很多,但找不到任何方法,所以想在这里发布,以便有人可以提供帮助。

【问题讨论】:

  • some["foo_bar_"..var.."_get_info"]() 工作吗?

标签: c binding lua ffi luajit


【解决方案1】:

从 FFI 加载的 C 库像 Lua 表一样被索引;您可以用相同的方式用原始值对它们进行索引:

some["foo_bar"..some_string.."_baz"]()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 2011-05-07
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多