訪問功能我寫了這個簡單的庫:的Lua 5.2無法在C庫
#include "lua.h"
#include "lauxlib.h"
static int l_or(lua_State *l)
{
int i, result = 0;
int nargs = lua_gettop(l);
for(i = 1; i <= nargs; ++i)
{
result |= lua_tointeger(l, i);
}
lua_pushnumber(l, result);
return 1;
}
static const luaL_Reg mybit [] = {
{"or", l_or},
{NULL, NULL} /* sentinel */
};
int __declspec(dllexport) luaopen_mybit (lua_State *L)
{
luaL_newlibtable(L, mybit);
luaL_setfuncs(L, mybit,0);
return 1;
}
編譯到一個名爲中是指mylib.dll DLL。
然後我測試使用獨立的Lua解釋使用下面的腳本:
print ("Test script")
mybit = require("mybit")
print(mybit)
mybit.or(1,2,3)
--print(mybit.or)
當我運行該腳本,我得到以下輸出:
lua: test.lua:6: <name> expected near 'or'
根據我的所有例子看着這應該是完美的。如果我註釋掉mybit.or(1,2,3)我得到
Test script
table: 005A8EB8
所以我相當有信心,該庫被加載。我的問題是,我不明白爲什麼我不能使用點運算符訪問或函數。
我使用的是使用mingw-gcc編譯的Lua 5.2。
當我試圖讓它工作時,我設法使用一個字符串來調用函數。雖然它看起來不太優雅 - 但直到有人指出我已經使用了其中一個保留字時才意識到。 – jgashby