您的位置:首页 > 编程语言 > Lua

C++获取Lua全局变量和执行Lua多参数多返回值函数

2015-08-04 10:33 651 查看
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"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: