C++获取Lua全局变量和执行Lua多参数多返回值函数
C++代码:
// LuaAndC.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <string.h>
using namespace std;
extern "C"
{
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}
int _tmain(int argc, _TCHAR* argv[])
{
//1.创建一个state
lua_State *L = luaL_newstate();
luaL_openlibs(L);
luaL_dofile(L,"Hello.lua");
//运行脚本
string strScript="print(\"Hello World From Script!\")";
luaL_dostring(L,strScript.c_str(),"MyScript");
//压栈
lua_pushstring(L,"Hunter");
lua_pop(L,1);
//获取lua的全局变量
lua_getglobal(L,"str"); //会将lua全局变量压入栈
if(lua_isstring(L,1))
{
cout<<lua_tostring(L,1)<<endl;//不弹出栈
}
lua_pop(L,1);
//准备lua全局函数的栈环境,参数是自左向右依次压栈
lua_getglobal(L,"sayHello");
lua_pushstring(L,"Hunter");
lua_pushstring(L,"18");
//Lua调用函数时,会自动将压入的参数弹出栈,只有返回值在栈中
lua_call(L,2,2);
//获取lua函数执行返回值,最后压入栈的返回值在栈顶
cout<<lua_tostring(L,-2)<<endl;
cout<<lua_tonumber(L,-1)<<endl;
lua_pop(L,2);
//4.关闭state
lua_close(L);
int i;
cin>>i;
return 0 ;
}
Lua代码:
function sayHello(strName,iAge)
print("Hello World "..str.." Age "..iAge)
return "x"..str,iAge+2
end
str="Hello"
C++获取Lua全局变量和执行Lua多参数多返回值函数的更多相关文章
- javascript学习笔记(二):定义函数、调用函数、参数、返回值、局部和全局变量
定义函数.调用函数.参数.返回值 关键字function定义函数,格式如下: function 函数名(){ 函数体 } 调用函数.参数.返回值的规则和c语言规则类似. <!DOCTYPE ht ...
- 【mybatis】mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wait timeout exceeded; try restarting transaction
今天使用mybatis和jpa的过程中,发现这样一个问题: mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wai ...
- Java开发学习(十八)----AOP通知获取数据(参数、返回值、异常)
前面的博客我们写AOP仅仅是在原始方法前后追加一些操作,接下来我们要说说AOP中数据相关的内容,我们将从获取参数.获取返回值和获取异常三个方面来研究切入点的相关信息. 前面我们介绍通知类型的时候总共讲 ...
- [Shell]Shell调用并获取执行jar包后的返回值
----------------------------------------------------------------- 原创博文,如需转载请注明出处! 博主:疲惫的豆豆 链接:http:/ ...
- bat 获取命令执行后的多个返回值,并取最后一个
最近在使用bat,遇到了这样的问题,获取adb shell cat命令之后的所有返回值,查了很长时间,才找到,现分享给大家. 举例如下: @for /f "tokens=*" %% ...
- 第4天:function对象(案例:获取当前日期属于当年第几天、arguments对象、函数类型、参数、返回值、自身调用)
获取当前日期输入当年第几天 //输入,年月日,获取这个日期是这一年的第几天 //年-月--日:20171月31日 function getDay(year,month,day){ //定义变量存储对应 ...
- 用汇编语言研究C语言的全局变量、局部变量、参数、返回值放在哪里
前提知识 c0s调用main函数的地址: 11ah main函数的连接地址: 01fah 一.全局变量与局部变量 测试程序 int a1,a2,a3; void f(void); void g(voi ...
- 在dcef3当中执行js代码并获得返回值
1.如何在dcef3当中执行js代码 procedure TForm1.btnWriteZMClick(Sender: TObject);var js: string;begin js := 'd ...
- 动态执行SQL语句,接收返回值
一.exec和sp_executesql介绍 当需要根据外部输入的参数来决定要执行的SQL语句时,常常需要动态来构造SQL查询语句.比如,一个比较通用的分页存储过程,可能需要传入表名,字段,过滤条件, ...
随机推荐
- css滚动相关问题记录
1) 关于滑动加速优化,可以通过css进行处理 例如,html如下: <div class="content-dialog"> <h1>活动规则</h ...
- selenium学习笔记(webdriver下载配置)
selenium安装后默认安装firefox可以直接使用,当然可以通过其它浏览器 博主这里整理了:chrome . IE 首先是下载地址 http://docs.seleniumhq.org/down ...
- spirng: srping mvc配置(访问路径配置)搭建SpringMVC——最小化配置
搭建SpringMVC——最小化配置 最开始接触网页的时候,是纯的html/css页面,那个时候还是用Dreamweaver来绘制页面. 随着网站开发的深入,开始学习servlet开发,记得最痛苦的就 ...
- 【spark】常用转换操作:keys 、values和mapValues
1.keys 功能: 返回所有键值对的key 示例 val list = List("hadoop","spark","hive",&quo ...
- 2017.11.17 Demo-stm8+temperature timeing control
1Find the lab and add in project. Downtown it from ST official website..compile it to ensure it pa ...
- VBox自动启动websrv 并开机启动所有的虚拟机
由于项目需要,在Ubuntu 16.04的Server版本中安装了一个virtualbox,并利用phpvirtualbox来管理虚拟机 需要在宿主机启动之后将所有的虚拟机也启动,因此用以下方式进行处 ...
- ng $interval(周期性定时器) $timeout(延迟定时器)
<!DOCTYPE html> <html ng-app="myApp"> <head lang="en"> <met ...
- GCC参数使用
gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言, ...
- 判定客户端IP所在的省市[2]
在上一篇地址控件的基础上,添加了判定客户端IP所在省市的功能. 调用新浪提供的IP库接口:http://counter.sina.com.cn/ip/,(可直接点击链接查看返回的数据) 126提供的接 ...
- IDEA导出想要的sql供H2数据库使用
通过Database连接远程oracle数据库. 选择对应的数据库 双击该数据库需要查询的表,进行自动查询,展示结果. 在查询结果中选择某条数据,右键,选择Data Executer,选择对应的方式. ...