加载文件使用的是luaL_loadfile这个api,案例如下: 结果是先打印100,再打印200 var 1. Lua代码如下: a = 100 b = 200 1. 2. Lua里面暂时不写函数,关于函数的调用会在之后讲。 接下来解释代码: var 1. luaL_loadfile(IntPtr luaState, string filepath) 第一个参数传入luaState,关于luaState,第一篇文章...
在程序loadfile之后会马上有一句: lua_resume(L,0); 在我开始学习它的时候,我想当然的认为要执行一个脚本文件中的函数,必须resume才会使脚本有效,否则任何语句都是不会让它执行的(描述好象有点问题),在后来的认识中,其实不是这样。 当luaL_loadfile(实际上最终是调用lua_load函数)之后lua_resume并不是必需的,...
int luaL_loadfile (lua_State *L, const char *filename); 加载某个文件 luaL_dofile 其定义为(luaL_loadfile(L, filename) || lua_pcall(L, 0, LUA_MULTRET, 0)) 两者之间的差别就是dofile比loadfile过了一个lua_pacll
luaL_loadfile(L, path); //Debug.Log(result); if ( result!= 0) { Debug.LogError(LuaDLL.lua_tostring(L, -1)); } luaL_loadfile(IntPtr luaState, string filepath) 第一个参数传入luaState,关于luaState,第一篇文章讲了。第二个参数传入文件路径。返回值是数字,如果返回0代表成功,0以外的...
首先利用lua提供的函数luaL_dofile来执行一个lua脚本。 可以看到有两个过程,首先luaL_loadfile函数将lua文件加载进来然后进行词法语法语义分析,得到一个closure函数放入栈中,接着调用lua_pcall函数来执行栈顶的closure。 我们先来看看第一个过程: 首先在luaL_loadfile中真正加载lua文件的是lua_load函数 ...
在执行luaL_loafile函数以后,创建了一个LClosure实例并放入栈顶,然后将test.lua脚本的代码编译好以后,并将其存入LClosure结构的Proto变量中以后,我们就可以调用luaL_pcall函数去执行这个编译好的结果了,现在我将正式进入到阐述lua虚拟机运转机制的阶段。 首先,我们得展示一下,在执行完luaL_loadfile函数以后,我们虚拟机...
luaL_loadfile# [-0, +1, e] int luaL_loadfile (lua_State *L, const char *filename); 等价于 luaL_loadfilex,其 mode 参数等于 NULL。 luaL_loadfilex# [-0, +1, e] int luaL_loadfilex (lua_State *L, const char *filename, const char *mode); 把一个文件加载为 Lua 代码块。 这...
对于一个开发人员的我,这两天在网站做一个导出Excel表格功能,遇到了一个坑。在本地测试导出并且可以...
加载(luaL_loadfile)到内存后的内存布局: vm_mem_z.png 在Lua中脚本加载通过luaL_loadfile生成一个函数闭包压入栈顶,然后luaY_parser词法、语法分析之后生成对应的数据存入到Proto中,字节码对应可详见函数部分Lua字节码文件结构及加载过程。如图主要为数据栈,函数调用栈以及全局状态中的数据及重要的栈指针。其中stack...
int luaL_loadfile (lua_State *L, const char *filename); 2 作用 将编译的块当做LUA函数压到栈顶, 之后可以从这里面导出为字节码 lua_dump 1 原型 int lua_dump (lua_State *L, lua_Writer writer, void *data); 2 lua_Write typedef int (*lua_Writer) (lua_State *L, const void* p, size...