我在這方面找到了一些參考,但是我無法使它們工作。我有一個Debian框與MySQL和MySQL代理。我正在用LUA腳本攔截SQL查詢。從lua腳本中調用c函數
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)呼叫的例子?
如果我理解正確,我有一個循環問題:調用一個C函數我首先需要調用一個C函數來註冊它。看起來我的方式應該是將我的代碼構建爲一個模塊,不是嗎?有沒有什麼好的例子或教程來做到這一點? – jordi
@ user2935222是的,如果你需要從獨立的Lua調用一個C函數,你需要創建一個C模塊或者使用提到的「非強健」軟件包之一:http://www.lua.org/pil/和http://lua-users.org/wiki/BindingCodeToLua(如果你想採用「非強健」的方式尋找「FFI」) – dualed