c++和lua交互
2013-09-23 13:10
435 查看
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
HelloWordLua.lua
/************************************************************************/
/* 事例二(c++程序调用lua脚本函数) */
/************************************************************************/
swapforl.lua
事例三(lua脚本调用c++程序函数)
/************************************************************************/
/* 事例三(lua脚本调用c++程序函数) */
/*这个在游戏中还是比较常用的,游戏世界中一些写好的接口可以供lua脚本调用*/
/************************************************************************/
swapforc.lua
源码:http://download.csdn.net/detail/cyteven/6306875
还请各位多指导
环境: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 then print("lua printx"..x) return x else print("lua printy"..y) return y end end
事例三(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
相关文章推荐
- Lua和C++交互
- Lua和C++交互总结(很详细)
- Lua与C++交互调用(1)
- C++与lua交互
- lua教程十一----C/C++与Lua之间进行数据函数交互以及解决“PANIC: unprotected error in call to Lua API (attempt t
- Lua和C++交互详细总结_3_C++调用Lua
- Lua和C++交互详细介绍一
- C++与Lua交互(一)
- lua与C/C++交互table(lua_gettble)
- Lua和C++的交互——进一步详解
- Lua与C++的交互
- LUA与C++交互第一篇
- C/C++和Lua的交互
- lua 与 c/c++ 交互(5) lua调用c/c++
- Lua 与C/C++ 交互系列: Lua调用C/C++函数(2).
- lua与c++交互全解析(二)
- Lua和C++交互详细总结
- 解决lua与C++交互问题一则,记一笔
- lua 与 C/C++交互
- lua5.1.5 c++交互