c/c++调用lua函数
2014-01-24 23:21
555 查看
lua环境由所有可操作的数据构成,编译好的函数,变量以及其他运行时内存。而所有的这些数据都将保存一个叫做lua_State的结构中。一个lua程序至少有个个lua_State,被称作lua环境,是用来发送和接收数据的地方,支撑着与其他语言的交互,具体来说就是利用lua栈(lua_Stack)来实现。
在c/c++中调用函数,具体过程可以分为几步:
1、新建一个lua环境并初始化或者已拥有lua_State
2、加载相应的程序库
3、加载执行lua文件
4、查询要执行的函数,通过函数名
5、参数入栈
6、设定参数个数,返回值个数,执行函数
7、从lua栈中提取并处理返回值。
源代码:
lua文件:
c++文件:
在c/c++中调用函数,具体过程可以分为几步:
1、新建一个lua环境并初始化或者已拥有lua_State
2、加载相应的程序库
3、加载执行lua文件
4、查询要执行的函数,通过函数名
5、参数入栈
6、设定参数个数,返回值个数,执行函数
7、从lua栈中提取并处理返回值。
源代码:
lua文件:
--测试vs2010下lua库配置 function add( a, b ) return (a+b) end
c++文件:
//测试lua开发库 //1.新建一个lua_state 并初始化环境 //2.加载相关lua程序库 //3.加载执行lua文件 //4.查询要执行的函数,参数入栈 //5.执行函数 //6.从lua栈中提取返回值 #include <iostream> extern "C" //采用c编译方式 { #include <lua\lua.h> #include <lua\lualib.h> #include <lua\lauxlib.h> } using namespace std; int main() { //初始化lua环境,加载了5.1版本的所有程序库 lua_State* L = lua_open(); luaL_openlibs( L );//分开加载库是io库有个bug听说 /*::luaopen_base( L ); ::luaopen_io( L ); ::luaopen_debug( L ); ::luaopen_math( L ); ::luaopen_os( L ); ::luaopen_package( L ); ::luaopen_string( L ); ::luaopen_table( L );*/ luaL_dofile( L, "test.lua" ); //执行配置文件 int a = 1; int b = 2; lua_getglobal( L, "add" ); //查询函数 lua_pushnumber( L, a ); //参数压栈 lua_pushnumber( L, b ); if( lua_pcall( L, 2, 1, 0 ) != 0 ) //错误检测 { cout <<"error running function add:" <<lua_tostring( L, -1 ) <<endl; } if( !lua_isnumber( L, -1 ) ) //检查返回值是否为数值 { cout <<"add 必须返回一个数值" <<endl; } int c = lua_tonumber( L, -1 ); lua_pop( L, 1 ); //从栈中弹出返回值 cout <<"a + b = " <<c <<endl; return 0; }
相关文章推荐
- tolua 使用 Lua调用c++多返回值函数
- Lua教程(四):在Lua中调用C语言、C++的函数
- C++调用Lua的函数
- C/C++语言调用lua函数和编译问题
- 简答的lua调用c++函数例子
- Lua中调用C++函数示例
- C/C++中调用LUA函数
- cocos2dx中注册导出c++函数供lua调用(使用tolua++)
- 最简单的C++中调用LUA函数源代码
- [寒江孤叶丶的Cocos2d-x之旅_25]Cocos2d-x 浅谈Lua与C++函数间互相调用问题
- 为Quick-Cocos2dx-2.26添加C++函数供Lua调用
- 解决c++ 调用lua 方式! 避免重复写逻辑对应的lua 函数
- Lua教程(四):在Lua中调用C语言、C++的函数
- Lua调用C++的函数
- VC6.0配置LUA编译环境及LUA调用C++函数的简单示例
- C/C++读取Lua中的变量及调用Lua函数
- 最简单的C++中调用LUA函数源代码
- lua调用C++函数崩溃时,查看lua的调用栈信息 (特别适用于tolua++)
- Lua篇(第06章):Lua调用C++的函数
- C++ 调用 lua 函数