vs2013+lua5.3.3 1.涉及函数 主要C函数:lua_call和lua_pcall 主要lua函数xpcall 2.正常使用lua_call ①hello.lua文件内容 ②C++文件内容(主要内容在test_func函数中的lua_call函数,表示调用lua中的ccall_test_
voidlua_call(lua_State *L,intnargs,intnresults);intlua_pcall(lua_State *L,intnargs,intnresults,interrfunc); 这两个api的前三个参数含义一样,只是lua_pcall在保护模式(protection mode)下调用函数。 在调用不出错的情况下,这两个函数的行为一模一样,但是lua_pcall有处理调用出错的能力,其处理方法主要取...
比如Lua是动态类型,C语言是静态类型,Lua是自动内存管理,而C语言则是手动内存管理。
lua_pcall和lua_call功能一样,只是lua_pcall提供了一个可以提供错误处理函数的功能 首先压入函数 ,再依次压入参数,现在你就可以调用lua_call了,函数调用后将参数,函数都弹栈,函数返回时会将返回值依次压栈。 调用前堆栈情况 参数 参数 函数 调用后堆栈情况 返回值 注意:无论在c函数里怎么调用栈,在pcall之后都会...
lua_pcall,lua_call 调用前后栈情况,lua_pcall和lua_call功能一样,只是lua_pcall提供了一个可以提供错误处理函数的功能首先压入函数,再依次压入参数,现在你就可以调用lua_call了,函数调用后将参数,函数都弹栈,函数返回时会将返回值依次压栈。调用前堆栈情况参数参数函
lua_pcall,lua_call调用前后栈情况 lua_pcall和lua_call功能一样,只是lua_pcall提供了一个可以提供错误处理函数的功能首先压入函数,再依次压入参数,现在你就可以调用lua_call了,函数调用后将参数,函数都弹栈,函数返回时会将返回值依次压栈。调用前堆栈情况参数参数函数调用后堆栈情况返回值注意:无论在c函数里怎么...
今天学习的是lua_call,和该函数相似的函数分别是lua_pcall和lua_cpcall.这些函数的⽬的就是让我们能够执⾏压⼊栈中的函数,该函数可能是lua中定义的函数,可能是C++重定义的函数,当然我们⼀般是⽤来执⾏lua中执⾏的函数,C++中定义的基本上可以直接调⽤的。函数原型:void lua_call (lua_State *L...
lua 提供的函数中,有些使用了 lua_call/lua_pcall,容易导致 yield 报错,比如 lua 函数:require,c 函数:luaL_dostring、luaL_dofile。 lua 提供的函数中,有些使用了 lua_callk/lua_pcallk 规避 yield 报错,比如 lua 函数:dofile。 lua-5.2 及以上的,可以使用 lua_callk / lua_pcallk / lua_yieldk ...
这是我在这个_forum_上的第一个问题,如果我做错了,请原谅我。 我正在使用Lua API工作,在C++中完成一个小项目,我正在尝试检测yield而不使用lua_resume和lua_pcall。之所以不使用这些函数,只是因为我不能在这个项目中使用它们。 这是我要运行我注册的delay函数的代码的一个小表示。
具体的委托触发逻辑与tolua是相似的,就是先把pcall要的error function准备好,然后再通过reference拿到lua function,最后调一下pcall,恢复调用栈就行了: public void Action() { #if THREAD_SAFE || HOTFIX_ENABLE lock(luaEnv.luaEnvLock) { #endif var L = luaEnv.L; int oldTop = LuaAPI.lua_gettop(L...