lua和c语言互相调用的例子

上传人:公**** 文档编号:488271338 上传时间:2022-09-30 格式:DOCX 页数:4 大小:28.93KB
返回 下载 相关 举报
lua和c语言互相调用的例子_第1页
第1页 / 共4页
lua和c语言互相调用的例子_第2页
第2页 / 共4页
lua和c语言互相调用的例子_第3页
第3页 / 共4页
lua和c语言互相调用的例子_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《lua和c语言互相调用的例子》由会员分享,可在线阅读,更多相关《lua和c语言互相调用的例子(4页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! 【程序语言】C/C+中如何使用Lua脚本 分类: lua2013-12-05 23:51146人阅读评论(0)收藏举报lua转自:http:/ LuaJIT5.打开 “ 项目 - LuaJIT属性 - 配置属性 - VC+目录”,在包含目录中加入D:LuaJIT-2.0.0-beta8,在库目录中加入D:LuaJIT-2.0.0-beta8src5.编写C程序代码cpp view plaincopy1. #include 2. #include 3.4. /*打开Lua所需要的库*/ 5. #pragma comment(lib,lua51.li

2、b) 6. extern C 7. 8. #include 9. #include 10. 11.12.13. int _tmain(int argc, _TCHAR* argv) 14. 15. lua_State *L=luaL_newstate(); /*创建一个解释器句柄*/ 16. luaL_openlibs(L); /*打开所有的Lua库*/ 17.18. luaL_loadfile(L,script.lua); /*调入Lua脚本文件*/ 19.20. lua_pcall(L,0,0,0); /*执行Lua脚本*/ 21. lua_close(L); /*关闭句柄*/ 22. s

3、ystem(pause); 23. return 0; 24. 6.编写你自己的Lua脚本,放到项目的资源文件下就可用了,例如最简单的Lua程序,记得存为刚刚声明打开的名字,这里是script.luaplain view plaincopy1. print(hello world) 现在你就可用开始的你的Lua之旅了!lua和c语言互相调用的例子 分类: 游戏开发2012-11-16 12:372729人阅读评论(4)收藏举报之前都是看的lua脚本怎么写的,还有就是在之前的工作室仿照着写。没有真正懂LUA和C语言如何之间交互的。今天写了一个例子首先我要实现的功能计算两个整数的和,就是x+y了。

4、因为x和y是随时变化的,我又不想在C程序里修改,那么就把这两个参数放到lua脚本来传递。那么我是如何实现的呢?第一步:搭建window环境,使用vs2005 这个东西在网上搜索一下吧,很多。第二步:写一下c函数的逻辑。cpp view plaincopyprint?1. /testlua.c 2. #include stdafx.h 3. #include 4. extern C 5. #include lua.h 6. #include lualib.h 7. #include lauxlib.h 8. 9. lua_State* L; 10. int add(lua_State* L);

5、11.12. int add(lua_State* L) 13. 14. /从L栈中取出索引为1的数值,并检查 15. int x = luaL_checkint(L,1); 16. /从L栈中取出索引为2的数值,并检查 17. int y = luaL_checkint(L,2); 18. printf(result:%dn,x+y); 19. return 1; 20. 21.22. int _tmain(int argc, _TCHAR* argv) 23. 24. /初始化全局L 25. L = luaL_newstate(); 26. /打开库 27. luaL_openlibs(L

6、); 28. /把函数压入栈中 29. lua_pushcfunction(L, add); 30. /设置全局ADD 31. lua_setglobal(L, ADD); 32. /加载我们的lua脚本文件 33. if (luaL_loadfile(L,E:workvsProjecttestLuamylua.lua) 34. 35. printf(errorn); 36. 37. /安全检查 38. lua_pcall(L,0,0,0); 39. /push进lua函数 40. lua_getglobal(L, mylua); 41. lua_pcall(L,0,0,0); 42.43.

7、printf(hello my luan); 44. return 0; 45. /testlua.c#include stdafx.h#include extern C #include lua.h#include lualib.h#include lauxlib.hlua_State* L;int add(lua_State* L);int add(lua_State* L)/从L栈中取出索引为1的数值,并检查int x = luaL_checkint(L,1);/从L栈中取出索引为2的数值,并检查int y = luaL_checkint(L,2);printf(result:%dn,x

8、+y);return 1;int _tmain(int argc, _TCHAR* argv)/初始化全局LL = luaL_newstate();/打开库luaL_openlibs(L);/把函数压入栈中lua_pushcfunction(L, add);/设置全局ADDlua_setglobal(L, ADD); /加载我们的lua脚本文件if (luaL_loadfile(L,E:workvsProjecttestLuamylua.lua)printf(errorn);/安全检查lua_pcall(L,0,0,0);/push进lua函数lua_getglobal(L, mylua); lua_pcall(L,0,0,0);printf(hello my luan);return 0;x下面是我的lua脚本代码,很简单html view plaincopyprint?1. function mylua() 2.3. print(mylua) 4.5. ADD(1,2) 6.7. ADD(3,4) 8.9.10. end function mylua()print(mylua)ADD(1,2)ADD(3,4)endADD(1,2) 关联到注册到的add函数,把参数压入了。最后输出结果为:看是不是很简单啊。呵呵重在理解上吧 /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号