在上一篇文章(C調用lua函數)中,講述了如何用c語言調用lua函數,通常,A語言能調用B語言,反過來也是成立的。正如Java與c語言之間使用JNI來互調,Lua與C也可以互調。
#include lua.h>
#include lauxlib.h>
#include lualib.h>
static int l_plus(lua_State* L)
{
lua_Integer a = luaL_checkinteger(L, 1);
lua_Integer b = luaL_checkinteger(L, 2);
lua_pushinteger(L, a+b);
return 1;
}
int main()
{
lua_State *L = luaL_newstate();
luaL_openlibs(L);
lua_pushcfunction(L, l_plus);
lua_setglobal(L, "myplus");
if (luaL_dostring(L, "print(myplus(2,2))")) {
lua_close(L);
error("Failed to invoke");
}
lua_close(L);
return 0;
}