c++和lua交互
来源:互联网 发布:dts音效软件怎么下载 编辑:程序博客网 时间:2024/05/29 23:24
Lua是一个很好用的脚本语言,在游戏开发中可以和c++完美结合,我总结的几点使用和大家分享一下,第一c++如何调用lua脚本,第二c++如何调用脚本函数,第三脚本如何调用c++函数。写的不一定好 还请各位多指导
环境:vc6.0编译器
Lua5.1(这个很简单,大家可以自行安装)
环境准备好后我们就可以开始配置环境了:
我的lua安装目录是:E:\Program Files\Lua\5.1
一、创建工程LuaTest Win32Console Application
二、在vc工程中加入lua环境
按照上图所示配置就可以了,别忘了把路径换成自己的lua安装路径。这里配置的目的就是可以让程序中可以顺利的调用lua.
三、创建程序
/************************************************************************/
/* 事例一:(程序直接调用lua脚本写我们最熟悉的显示helloword) */
/************************************************************************/
创建HelloWord.cpp
#include <iostream>#include "lua.hpp"using namespace std;/* 在这种结构中保持状态的所有信息。*/lua_State* L; int main ( int argc, char *argv[] ){ /* 初始化lua*/ L = lua_open(); /* 加载 lua libraries */ luaL_openlibs(L); /* 调用脚本 */ luaL_dofile(L, "HelloWordLua.lua"); /* 销毁所有lua state中的对象 */ lua_close(L); return 0;}
HelloWordLua.lua
print("hello world")
/************************************************************************/
/* 事例二(c++程序调用lua脚本函数) */
/************************************************************************/
#include <iostream>#include "lua.hpp"using namespace std;/* 在这种结构中保持状态的所有信息。*/lua_State* L;int luaswap ( int x, int y ){ /* 函数名 */ lua_getglobal(L, "swap"); /* 参数压栈*/ lua_pushnumber(L, x); /* 参数压栈 */ lua_pushnumber(L, y); /* 调用环数 2个参数1个返回值*/ lua_call(L, 2, 1); /* get the result */ int result = (int)lua_tointeger(L, -1); lua_pop(L, 1); return result;} int main ( int argc, char *argv[] ){ /* 初始化lua*/ L = lua_open(); /* 加载 lua libraries */ luaL_openlibs(L); /* 调用脚本 */ luaL_dofile(L, "swap.lua");/*调用函数*/int result = luaswap(20,50);cout<<"两个数中大的数为:"<<result<<endl; /* 销毁所有lua state中的对象 */ lua_close(L); return 0;}
swapforl.lua
function swap(x,y)if x > y thenprint("lua printx"..x)return xelseprint("lua printy"..y)return yendend
事例三(lua脚本调用c++程序函数)
/************************************************************************/
/* 事例三(lua脚本调用c++程序函数) */
/*这个在游戏中还是比较常用的,游戏世界中一些写好的接口可以供lua脚本调用*/
/************************************************************************/
#include <iostream>#include "lua.hpp"using namespace std;/* 在这种结构中保持状态的所有信息。*/lua_State* L;int swap(lua_State *L){/* 取出参数个数 */int n = lua_gettop(L);int x,y,nMin,nMax;if ( n != 2){return 0;}/* 取出两个参数*/x = lua_tonumber(L,1);y = lua_tonumber(L,2);nMin = x < y?x:y;nMax = x < y?y:x;/* 压栈 实际就是返回值 */lua_pushnumber(L,nMin);lua_pushnumber(L,nMax);/* 返回值个数*/return 2;} int main ( int argc, char *argv[] ){ /* 初始化lua*/ L = lua_open(); /* 加载 lua libraries */ luaL_openlibs(L);/*注册函数*/lua_register(L, "swap", swap); /* 调用脚本 */ luaL_dofile(L, "swapforc.lua"); /* 销毁所有lua state中的对象 */ lua_close(L); return 0;}
swapforc.lua
minnum,maxnum = swap(20,50)print("minnum:"..minnum.."maxnum:"..maxnum)
源码:http://download.csdn.net/detail/cyteven/6306875
- C和lua交互
- lua和C交互
- lua和c的交互
- lua和C交互框架
- lua和c的交互
- lua和c的交互
- lua和c的交互
- lua和C交互框架
- lua和c的交互
- lua和c的交互
- lua和c的交互
- lua和c的交互
- lua和C交互框架
- lua和c的交互
- lua和c的交互
- lua和c的交互
- C/C++和Lua的交互
- Lua和C/C++的交互
- 基于内存映射之I/O----NIO
- hibernate 事务嵌套导致org.hibernate.TransactionException: Transaction not successfully started
- 两种开源的数据源---C3P0和DBCP
- 【转】一枚“程序媛”的找工作经验与教训
- mac上ndk环境配置
- c++和lua交互
- 每个测试文件前输入标识自己的字符串
- HDU 3397 Sequence operation
- 杭电ACM2037
- 浅析Java浅克隆机制
- 工业自动化领域的安全保护
- 解决在Oracle数据库中使用hibernate生成表不能正确创建表的问题
- 网页中直接显示PDF方法汇总
- Linux下各种实用的安全工具打包推荐