Lua 与 C++的简单交互
2012-03-20 21:24
489 查看
// test.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" extern "C" { #include "lua.h" #include "lualib.h" #include "lauxlib.h" } static int print(lua_State* L) { /*从栈里拿lua调用时传过来的参数*/ int sum = lua_tointeger(L, 1); //当Lua调用C函数的时候,第一个参数总是在这个私有栈的index=1的位置。 /*把结果返回给lua*/ lua_pushnumber(L, sum); return 1; } lua_State* L; int luaadd(int x,int y) { int sum; /* lua中的函数*/ lua_getglobal(L, "add"); /* 压入虚拟栈的第一个值*/ lua_pushnumber(L, x); /* 第二个值*/ lua_pushnumber(L, y); /* 调用传入的两个值,并返回一个结果*/ lua_call(L, 2, 1); //所有的参数以及函数本身都会出栈。而函数的返回值这时则被压入堆栈 /*得到结果,由于返回类型不同这里要显示的强制转换*/ sum = (int)lua_tointeger(L, -1); lua_pop(L, 1); return sum; } int _tmain(int argc, _TCHAR* argv[]) { int sum; /* Lua初始化*/ L = lua_open(); // 对于.0以后版本的Lua,建议使用luaL_newstate代替 /* 压入函数*/ //lua_pushcfunction(L, print); /* 把函数赋予全局变量*/ //lua_setglobal(L, "myPrint"); lua_register(L, "myPrint", print); //这个等价于上面两个 /*加载文件add.lua */ luaL_dofile(L, "lua/Init.lua"); //调用lua sum = luaadd( 200, 50 ); printf("sum=%d\n",sum); return 0; } //lua/Init.lua 内容 /* function add(x, y) --像c那样调用,得到c函数push进去的值 sum = myPrint(x+y) return sum end function sub(x, y) return x - y end */
相关文章推荐
- Lua与C/C++的交互1:C/C++与Lua最简单的互动
- 【cocos2d-x 3.5】Lua与C++简单交互
- cocos2d-x lua与c++简单交互
- 简单的C++与LUA交互
- c++ 与 lua 简单交互1 (LUA CAPI)
- VS 2013 编译Lua源码,并与C++ 进行简单交互
- Lua与C/C++的交互1:C/C++与Lua最简单的互动
- Lua和C++交互详细总结
- 【COCOS2DX-LUA 脚本开发之十一】C/C++与Lua之间进行数据函数交互以及解决“PANIC: unprotected error in call to Lua API (attempt t
- LUA与C++交互第一篇
- Lua和C++交互
- (使用lua++)Lua脚本和C++交互(三)
- lua 与 c/c++ 交互(5) lua调用c/c++
- 编写WebService如此简单 - lua/python/c++
- qt qml和c++交互的一个简单例子
- Lua和C++交互总结
- Lua与C/C++的交互3:C/C++中读取Lua文件中的表
- C/C++与Lua之间进行数据函数交互
- (使用lua++)Lua脚本和C++交互(三)
- Lua与C++ 交互