我正在嘗試創建一個C模塊以便從lua腳本中調用。我正在研究Debian Linux。我正在使用mysql-proxy和lua 5.2。我已經創建(從教程中複製)一些要調用的示例函數。加載模塊未定義符號時出錯:luaL_setfuncs
裝載機的定義是這樣的:
int luaopen_luacall(lua_State* l)
{
luaL_newlibtable(l, luacall);
luaL_setfuncs(l, luacall, 0);
return 1;
}
從LUA調用此我使用此代碼:
luacall = require("luacall")
local f = luacall.fun1()
我已經使用這個命令編譯它:
g++ -shared -Wl,-E,-soname,libluacall.so -o luacall.so luacall.c -fPIC -llua -ldl
當我嘗試運行腳本時,在require
命令上出現以下錯誤:
error loading module 'luacall' from file '/usr/lib/mysql-proxy/lua/luacall.so':
/usr/lib/mysql-proxy/lua/luacall.so: undefined symbol: luaL_setfuncs
我真的迷失在我做錯的事上。
您確定正在運行Lua 5.2嗎?我不是指你在g ++中鏈接到的庫,我的意思是你在哪裏運行腳本來執行'require'? – Alex
我已經卸載Lua 5.1。我在系統上唯一的LUA二進制文件是Lua 5.2。我不太清楚調用mysql-proxy的方式或方式。我試圖包含命令print'(「VERSION」,lua_version())',但我得到一個錯誤'嘗試調用全局'lua_version'(一個零值)'' – jordi
'lua -v'打印什麼? – lhf