C语言中通过LUA API访问LUA脚本变量的简单例子
1.简介
这一节介绍一些关于栈操作、数据类型判断的LUA API,可以使用这些函数获得脚本中的变量值。
2.步骤
编写 test01.lua 脚本,在VS2003中创建控制台C++程序并正确配置,执行查看结果,修改test02.lua脚本后查看执行结果
3.测试脚本
以下是用来测试的lua脚本
function plustwo(x)
local a = 2;
return x+a;
end;
rows = 6;
cols = plustwo(rows);
上面的脚本定义了一个函数、两个全局变量(LUA脚本变量默认是全局的)。之后的C++程序中,我们将通过栈操作获得这两个变量 rows, cols。
4.控制台程序
#include <iostream>extern "C"
{
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}using namespace std;
int main(int argc, char* argv[])
{
cout << "01_Read_Stack" << endl;/**//* Create a LUA VMachine */
lua_State *L = lua_open();
luaopen_base(L);
luaopen_table(L);
luaL_openlibs(L);
luaopen_string(L);
luaopen_math(L);int iError;
iError = luaL_loadfile(L, "../test01.lua");
if (iError)
{
cout << "Load script FAILED!" << lua_tostring(L, -1)<< endl;
lua_close(L);
return 1;
}
iError = lua_pcall(L, 0, 0, 0);
if (iError)
{
cout << "pcall FAILED"<< lua_tostring(L, -1)<< iError<< endl;
lua_close(L);
return 1;
}
lua_getglobal(L, "rows");
lua_getglobal(L, "cols");if (!lua_isnumber(L, -2))
{
cout << "[rows] is not a number" << endl;
lua_close(L);
return 1;
}
if (!lua_isnumber(L, -1))
{
cout << "[cols] is not a number" << endl;
lua_close(L);
return 1;
}
cout << "[rows]"
<< static_cast<int> (lua_tonumber(L, -2))
<< "[cols]"
<< static_cast<int> (lua_tonumber(L, -1))
<< endl;lua_pop(L,2);
lua_close(L);
return 0;
}
您可能感兴趣的文章:
- 简单的C中通过LUA API访问LUA脚本变量
- 简单的C中通过LUA API访问LUA脚本变量
- [LUA学习笔记02]在C中通过LUA API访问LUA脚本变量
- lua脚本简单的例子使用
- 通过collectd工具获取虚拟机的nagios监控脚本简单例子
- Linux下C语言引用shell脚本的简单例子
- Hadoop通过c语言API访问hdfs
- 通过collectd工具获取虚拟机的nagios监控脚本简单例子
- 一个Lua脚本操作Redis的简单例子
- IT之路-C语言中五大内存区及变量的存储类型、简单shell脚本(上).ZCSDN-2017.7.18
- C语言中调用LUA(3)--往Lua脚本中传递变量
- hibernate课程 初探单表映射1-11 通过hibernate API访问编写第一个小例子
- C语言调用lua的简单例子
- [脚本] - 通过例子学习 Lua
- 通过一个小例子来简单理解C语言中的内存空间管理
- 一个简单的QQ隐藏图生成算法 通过jQuery和C#分别实现对.NET Core Web Api的访问以及文件上传
- Nginx通过LUA脚本访问RabbitMQ消息队列
- 通过HDFS的API访问文件系统的例子
- 通过loadrunner 11常规通用的C语言API类型的Vuser 方式,测试验证MySQL数据库插入、查询、修改、删除数据性能脚本实例
- java通过axis访问.net webService 简单例子