0

我在这方面找到了一些参考资料,但我无法让它们发挥作用。我有一个带有 mysql 和 mysql-proxy 的 Debian 盒子。我正在使用 LUA 脚本拦截 SQL 查询。

function read_query(packet)
        if packet:byte() ~= proxy.COM_QUERY then
                print("error read (COM_QUERY)")
        end
    local query = packet:sub(2)
    print ("query : " .. query )
           //Transformation here
    return proxy.PROXY_SEND_QUERY
end

我想解析和处理查询,以便我可以用我已经开发的一些 c 函数重写它。我正在尝试找到调用此功能的方法,但我发现的唯一方法是假设 c MAIN 函数启动 LUA 注册过程。

有什么方法可以让 LUA 脚本调用编译后的 C 文件中的函数?

我应该如何拨打(LUA)和接听(C)电话的任何示例?

4

2 回答 2

0

lua.org提取

当我们说 Lua 可以调用 C 函数时,这并不意味着 Lua 可以调用任何 C 函数。(有一些包允许 Lua 调用任何 C 函数,但它们既不便携也不健壮。) ... ...要从 Lua 调用 C 函数,我们必须注册它,也就是说,我们必须以适当的方式将其地址提供给 Lua。

你应该看看这里

于 2014-01-22T12:49:56.240 回答
0

SWIG 是为您生成绑定的好选择:www.swig.org。您创建一个 .i 文件,在其中加载您的 C 标头,然后 SWIG 为您生成所有绑定代码。然后编译生成的代码,将它链接到你的 C 库和 Lua 库,然后在你的脚本中输入 require 'yourCLibrary',你可以做你想做的事。非常实用,您的包装器可用于从其他语言(如 Python 和 C#)访问您的 CLibrary。

于 2014-01-22T12:56:40.500 回答