博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单的C中通过LUA API访问LUA脚本变量
阅读量:5925 次
发布时间:2019-06-19

本文共 1401 字,大约阅读时间需要 4 分钟。

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;
}

转载于:https://www.cnblogs.com/kudy/archive/2013/01/29/2881856.html

你可能感兴趣的文章
Linq使用Group By 1
查看>>
[Step By Step]SAP HANA PAL逻辑回归预测分析Logistic Regression编程实例FORECASTWITHLOGISTICR(预测)...
查看>>
文章标题
查看>>
堆排序
查看>>
第 4 章 gulpjs
查看>>
3.4. IP Address
查看>>
Flex builder的调试时需要flash player debug版本
查看>>
Ubuntu 中启用 root 帐号
查看>>
a2sd+状态下应用程序丢失的解决办法
查看>>
F#初试(2)
查看>>
基于WF4 Workflow Service实现简单审批流程(上)
查看>>
杭州互联网公司汇总
查看>>
数据结构复习笔记(3)
查看>>
基于事件驱动的DDD领域驱动设计框架分享(附源代码)
查看>>
7.5。Outlook smime x509证书
查看>>
51Nod 1289 大鱼吃小鱼(模拟,经典好题)
查看>>
【Android疑难杂症】GridView动态设置Item的宽高导致第一个Item不响应或显示不正常的问题...
查看>>
一个线程封装类
查看>>
贪心算法
查看>>
把JScript函数模拟为"异步执行"方式
查看>>