![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
lua
李潇洒洒
博客仅作为记录笔记使用
展开
-
1.开发环境准备.vs2013编译库Lua库.输出路径
1.创建一个win32控制台项目2.选择项目->添加现有项,添加lua源码。3.项目->属性->配置属性->常规->输出目录填写:..\lib(注意现在的路劲为项目中后缀为.vcxproj文件的所在路劲)4.平台工具集选择Visual Studio 2013 - Windows XP (v120_xp) 不选择的话,xp系统不能使用5.项目->属性->配置属性->编译器->高级->原创 2017-08-25 20:59:08 · 282 阅读 · 0 评论 -
lua和c++全部源码
LUA C++原创 2017-09-02 20:25:52 · 522 阅读 · 0 评论 -
1-12运行结果参考
原创 2017-08-28 20:25:26 · 321 阅读 · 0 评论 -
12.c++调用Lua函数
C++ 调用Lua函数:lua_getglobal(lua, "LEvent");//执行脚本中的函数if (lua_pcall(lua, 0, 0, 0) != 0){const char * error = lua_tostring(lua, -1);printf(error);}c++://c++调用Lua函数lua_getglobal(L原创 2017-08-28 20:14:09 · 265 阅读 · 0 评论 -
11.C++调用Lua全局变量(表)
C++ 调用Lua 全局变量(表)lua_getglobal(lua, "ta"); //调用后栈顶放的就是全局变量lua_getfield(lua, -1, "name");//printf("lua ta = %s\n", lua_tostring(lua, -1));lua_pop(lua, 2);列子:C++://c++调用Lua给Lua传递表和访问Lu原创 2017-08-28 20:12:18 · 1278 阅读 · 0 评论 -
10.c++给lua传递变量和访问Lua的全局变量
*全局变量访问(普通、表),函数调用(参数,返回值)*注意栈空间的清理,防止内存泄漏1.c++调用lua全局变量(普通)lua_getglobal(lua,"luavar"); //状态指针和变量名printf("lua var =%s\n",lua_tostring(lua,-1));lua_pop(lua,1); //弹出,从1(栈底)开始弹出/////原创 2017-08-25 21:09:11 · 2517 阅读 · 0 评论 -
9.Lua调用c++函数获取返回值
1.Lua_pushstring(l,re);lua_pushnumber(l,123);//压入栈顶c++:int CTestRe(lua_State *L){lua_pushstring(L,"return value");//在吧字符串压倒栈顶return 1; //作为返回值传递给Lua,返回1个}/mainlua_regis原创 2017-08-25 21:06:45 · 1272 阅读 · 0 评论 -
8.lua调用c++函数传递表和参数类型检查
1.lua_next(L,3)*先从栈顶弹出一个key*从栈指定位置的table里取下一对key-value,先将key入栈再将value入栈*如果第二部成功则返回非0值c++://lua调用c++函数传递表key-value和参数类型,遍历int CTestTable1(lua_State *L){lua_pushnil(L); //先在栈顶压原创 2017-08-25 21:06:07 · 841 阅读 · 0 评论 -
7.Lua调用c++传递数组函数
1.Lua调用C++ 传递数组c++示例:int CTestArr(lua_State *L){printf("In CTestArr\n");int len = luaL_getn(L, 2);//获取L的第二个参数的大小for (int i = 1; i {lua_pushnumber(L, i);//往栈里面压一个数字i,表示我们要原创 2017-08-25 21:05:15 · 1630 阅读 · 0 评论 -
6.Lua调用c++函数传递普通参数
1.Lua与c++交互‘*lua与c++交互是通过堆栈来进行交互的。2.lua调用c++函数*无参数无返回的调用Lua调用C++ 最简单示例:int CTest(lua_State *l){ return 0; //返回结果个数}lua_register(lua, "CTest", CTest);原创 2017-08-25 21:04:41 · 960 阅读 · 0 评论 -
5.Lua表和函数语法
用Lua表要打开库:luaopen_table(L);1.Lua表的处理*表的插入 l插入 table.insert(a, pos,line) &不传pos想当于push_back例子:----------lua 表的插入local tab1 = {"001","002","003"}for i,v in ipairs(tab1) do原创 2017-08-25 21:01:07 · 275 阅读 · 0 评论 -
4.Lua条件判断和循环语句
1.控制结构语句*if条件语句*while循环语句*repeat循环语句(类似c 的do while)*for循环语句2.代码示例if conditions thenthen-partelseif conditions thenelseif-partelseelse-partend3.if 条件原创 2017-08-25 21:00:47 · 2990 阅读 · 0 评论 -
3.Lua变量和字符串处理
用Lua字符要用字符库:luaopen_string(L)一。基础只是1.lua文件 --为注释2.dofile("111.lua"); --调用另一个脚本3.直接 a = 10;为全局变量 上面的111.lua脚本可以访问a变量4.local a =10; --这时a为本地变量,不过建议不要用全局变量,全局变量是不会释放的会一直占用内存,所以尽量使用本地变量例:m原创 2017-08-25 21:00:15 · 2070 阅读 · 0 评论 -
2.第一个lua程序
1.创建一个lua的c++项目:2. 指定Lua的源代码路劲:项目->属性->配置属性->C/C++->常规->附加包含路劲:..\..\1.luaDLL\luaDll3.添加lua的lib路劲和库名:1.项目->属性->配置属性->链接器->高级->附加库目录:..\lib2.项目->属性->配置属性->链接器->输入->附加依赖项:添加luaDLL.lib;3.原创 2017-08-25 20:59:51 · 395 阅读 · 0 评论 -
13.C++调用Lua函数错误显示和堆栈清理
1.C++调用Lua函数错误显示和堆栈清理c++://c++调用Lua函数lua_getglobal(L,"event111");lua_pcall(L,0,0,0); //2.要调用函数的参数,3,函数处理返回值,4,错误输出的函数,0则说明不出,用pcall本身来处理,并将错误压入栈中printf("top is %d\n",lua_gettop(L)); //打印原创 2017-09-02 20:22:08 · 1858 阅读 · 1 评论