繁体   English   中英

从lua脚本调用c函数

[英]calling c functions from lua script

我在此找到了一些参考,但无法使它们起作用。 我有一个带有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)电话的任何示例?

摘自lua.org

当我们说Lua可以调用C函数时,这并不意味着Lua可以调用任何C函数(有允许Lua调用任何C函数的程序包,但它们既不可移植也不可靠)。要从Lua调用C函数,必须对其进行注册,即,必须以适当的方式将其地址提供给Lua。

你应该在这里看看

SWIG是为您生成绑定的一个不错的选择:www.swig.org。 您创建一个.i文件,在其中加载您的C标头,然后SWIG为您生成所有绑定代码。 然后,您编译生成的代码,将其链接到C库和Lua库,并在脚本中输入“ yourCLibrary”,即可完成所需的操作。 非常实用,您的包装器可用于从其他语言(如Python和C#)访问yourCLibrary。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM