Lua学习笔记(4) : 调用Lua函數延伸 - 返回多个结果
来源:互联网 发布:网络舆论 新浪微舆情 编辑:程序博客网 时间:2024/05/08 02:29
以下给出一个示例,说明当需要Lua函数返回多个结果时,该如何获取栈中的结果,以及Lua脚本该如何编写
C++代码
#include "include\lua.h"#include "include\lauxlib.h"#include "include\lualib.h"#include "windows.h"void main(int argc, char* argv[]){int ans=0, ans2=0;lua_State *pLua = luaL_newstate(); // Lua5.2后的版本遗弃lua_open(),改用luaL_newstate()if(!pLua){printf("Failed to open Lua.\n");return;}luaL_openlibs(pLua); // Lua5.1以上使用此函数开启库if(luaL_dofile(pLua, "luaDemo.lua")!=0) // 执行Lua腳本,若返回0则成功{printf("Failed to run lua.\n");return;}lua_settop(pLua, 0); // Lua堆栈栈顶索引重置为0lua_getglobal(pLua, "foo"); // 指定C++欲调用Lua脚本中的foo函数,此时C++程序会把foo字串推入堆栈// 将欲传入Lua函数之参数依序推入堆栈lua_pushnumber(pLua, 3); // num1lua_pushnumber(pLua, 7); // num2lua_call(pLua, 2, 2); // 调用Lua函数;这个宏的第二个参数是所指定之Lua函数的参数数量,宏的第三个参数是该函数返回值的数量// Lua将参数及函数名依序取出堆栈,然后调用函数,并把结果依序推入堆栈if(lua_isnumber(pLua, 1)!=0) // 判断堆栈中的值是否为我们要的数字型态的值,若返回非0则正確{ans = (int)lua_tonumber(pLua, 1); // 取出堆栈中的函数返回值}if(lua_isnumber(pLua, 2)!=0) // 判断堆栈中的值是否为我们要的数字型态的值,若返回非0则正確{ans2 = (int)lua_tonumber(pLua, 2); // 取出堆栈中的函数返回值}printf("%d %d\n", ans, ans2);lua_close(pLua);system("pause");return;}
Lua脚本
function foo(num1, num2)return (num1 * num2), (num1 + num2)end
Output:
21 10
0 0
- Lua学习笔记(4) : 调用Lua函數延伸 - 返回多个结果
- Lua学习笔记--C调用Lua
- Lua学习笔记--Lua调用C初探
- lua入门之二:c/c++ 调用lua及多个函数返回值的获取
- lua入门之二:c/c++ 调用lua及多个函数返回值的获取
- Lua入门之二:C/C++ 调用Lua及多个函数返回值的获取
- lua学习笔记14:函数多返回值
- Lua学习笔记二之C中调用Lua
- Lua学习笔记三之从Lua中调用C
- Lua学习笔记6:C++和Lua的相互调用
- Lua学习笔记(3) : 在C++中调用Lua函數
- Lua函数的多个返回值
- Lua函数的多个返回值
- Lua函数的多个返回值
- lua function返回多个参数
- lua学习笔记 1 android 调用Lua, Lua脚本中启动Intent
- lua学习笔记 3 android调用Lua。Lua脚本使用LoadLib回调Java,并传多个参数
- lua学习笔记 1 android 调用Lua, Lua脚本中启动Intent
- 线程阻塞与Handler相关超详细原理讲解
- 黑马程序员——Java之集合(下)
- android四大组件
- 用UICollectionView修改微博,相对布局色熟悉
- COMMTIMEOUTS详解
- Lua学习笔记(4) : 调用Lua函數延伸 - 返回多个结果
- DescriptionResourcePathLocationType The processing instruction target matching "[xX][mM][lL]" is
- 用for循环实现冒泡排序
- js控制radio选中
- C/C++:函数的编译方式与调用约定以及extern “C”的使用
- php模拟post提交数据
- 【Struts2】请求参数的接受
- 1_用instancetype替代id的几点原因
- 简单说响应式编程,换种思维编程,让你的代码不仅仅是变漂亮