我在这方面找到了一些参考资料,但我无法使它们发挥作用。我有一个带有mysql和mysql代理的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主函数启动LUA注册过程的唯一方法。
有没有办法让LUA脚本调用编译后的C文件中的函数?
我应该如何打(LUA)和接听(C)电话的例子吗?
发布于 2014-01-22 12:49:56
lua.org提取液
当我们说Lua可以调用C函数时,这并不意味着Lua可以调用任何C函数。(有些包允许Lua调用任何C函数,但它们既不可移植也不健壮。).要从Lua调用C函数,我们必须注册它,也就是说,我们必须以适当的方式向Lua提供它的地址。
你应该看看这里
发布于 2014-01-22 12:56:40
SWIG是为您生成绑定的一个很好的选择: www.swig.org。您可以创建一个加载C头的.i文件,而SWIG为您生成所有绑定代码。然后编译生成的代码,将其链接到您的C库和Lua库,在您的脚本中需要“yourCLibrary”,您可以做您想做的事情。非常实用,您的包装器可以用于从其他语言(如Python和C# )访问C#。
https://stackoverflow.com/questions/21281229
复制相似问题