咔叽游戏

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 648|回复: 0

[Lua] Lua编程示例(六): C语言调用Lua函数

[复制链接]
  • TA的每日心情
    无聊
    2019-5-27 08:20
  • 签到天数: 4 天

    [LV.2]圆转纯熟

    发表于 2020-1-28 12:02:49 | 显示全部楼层 |阅读模式
    C++端:

    #include "stdafx.h"

    lua_State *L;
    void load_lua(lua_State **L,char *filename){
    *L=luaL_newstate();
    luaL_openlibs(*L);
    if(luaL_loadfile(*L,filename) || lua_pcall(*L,0,0,0)){
    luaL_error(*L,"load file error! %s",lua_tostring(*L,-1));
    }
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
    load_lua(&L,"raw.lua"); //此处若直接传入L会出错
    lua_getglobal(L,"gettable");
    if(lua_pcall(L,0,1,0) !=0){
    luaL_error(L,"pcall wrong %s",lua_tostring(L,-1));
    }
    luaL_checktype(L,1,LUA_TTABLE);
    int n=lua_objlen(L,1);
    printf("n = %d\n",n);
    lua_pushstring(L,"ee");
    lua_rawseti(L,1,5); //t[n]=v,n为第三个参数,v是栈顶元素
    n=lua_objlen(L,1);
    printf("n = %d\n",n);
    int i;
    for(i=1;i<=n;i++){
    lua_rawgeti(L,1,i);
    printf("%s\n",lua_tostring(L,-1));
    }
    return 0;
    }
    lua脚本:
    function gettable()   tb={ "aa","bb","cc","dd"}   return tb end
    运行输出的结果为:

    n = 4
    n = 5
    aa
    bb
    cc
    dd
    ee

    QQ|免责声明|小黑屋|手机版|Archiver|咔叽游戏

    GMT+8, 2024-3-28 18:06

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表