lua_remove(L, -2); // 跳t出栈 lua_pushinteger(L, 14); // 参数3入栈 lua_call(L, 3, 1); // 调用函数,参数和函数都会出栈 lua_setglobal(L, "a"); // 给a赋值,栈顶出栈 上述代码执行完毕后,堆栈状态恢复原样。(2)int lua_pcall (lua_State *L, int nargs, ...
lua_pushcfunction(L, l_sin);//Lua know the address of l_sin in c context lua_setglobal(L,"mysin");//map l_sin to mysin will be called in lua context if( !luaL_dofile(L,"./cal.lua") ) { printf("load cal.lua successful\n"); }else{ printf("error load file: %s\n", ...
2. int lua_pcall(lua_State *L, int narg, int nresults, int errfunc);:这个函数与lua_call类似,但它还允许设置错误处理函数,如果函数调用失败,Lua会调用这个函数处理错误。3. lua_pushcfunction(lua_State *L, lua_CFunction f);:将C函数压入栈中,以便在Lua中调用。4. lua_register...
/tmp/ccPtEQyI.o: In function `luaadd': main.c:(.text+0x23): undefined reference to `lua_getfield' main.c:(.text+0x37): undefined reference to `lua_pushnumber' main.c:(.text+0x4b): undefined reference to `lua_pushnumber' main.c:(.text+0x64): undefined reference to `lua_call'...
51CTO博客已为您找到关于lua call c function的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及lua call c function问答内容。更多lua call c function相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。
C 进入 Lua 的边界一共有四个 API :lua_call,lua_pcall,lua_resume和lua_yield。其中要解决的关键问题在于 call 一个 lua function 有两条返回路径。 lua function 的正常返回应该执行lua_call调用后面的 C 代码,而中途如果 yield 发生,回导致执行序回到前面lua_resume调用处的下一行 C 代码执行。对于后一种...
callLuaFunction : 调用lua函数 luaFileName = lua文件名 functionName = 所要调用Lua中的的函数名 */ constchar* callLuaFunction(constchar* luaFileName,constchar* functionName); //--- lua -> c++ ---// voidcallCppFunction(constchar* luaFileName); private: staticintcppFunction...
LUA_ERRMEM: memory allocation error. For such errors, Lua does not call the error handler function. LUA_ERRERR: error while running the error handler function. lua_pcall (lua_State *L, int nargs, int nresults, int errfunc); 作用:以保护模式调用一个函数。
lua_call(L, 0, 0); } luaL_ref把栈顶的值取出,放到指定的tabel中,然后返回一个索引(目测是数组的index)。 lua_rawgeti把之前保存的function对象取出,再由lua_call调用托福答案 function callback( ) print "Callback" end cb.setnotify(callback) ...
举例说明,如果你有这么一个lua函数: function f (x, y) return (x^2 * math.sin(y))/(1 – x) end 那么。我们就能够定义个c函数来封装这个调用: /* call a function ‘f’ defined in Lua */ double f (double x, double y) { double z; lua_getglobal(L, “f”); lua_pushnumber(L, ...