我找到了一些关于此的参考资料,但我无法让它们发挥作用。我有一个带有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)电话的任何例子?
答案 0 :(得分:0)
摘自lua.org
当我们说Lua可以调用C函数时,这并不意味着Lua可以调用任何C函数。(有些软件包允许Lua调用任何C函数,但它们既不可移植也不健壮。)... ...要从Lua调用C函数,我们必须注册它,也就是说,我们必须以适当的方式将其地址提供给Lua。
你应该看看here
答案 1 :(得分:0)
SWIG是为您生成绑定的好选择:www.swig.org。您创建一个.i文件,在其中加载您的C头,SWIG为您生成所有绑定代码。然后编译生成的代码,将其链接到您的C库和Lua库,并在脚本中输入require'yourCLibrary',您可以执行您想要的操作。非常实用,您的包装器可用于从其他语言(如Python和C#)访问您的库。