c 调用 lua 向lua函数 传递table

Posted taek

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c 调用 lua 向lua函数 传递table相关的知识,希望对你有一定的参考价值。

参考 https://www.myvoipapp.com/blogs/yxh/2016/07/14/c%E5%90%91lua%E5%87%BD%E6%95%B0%E4%BC%A0%E9%80%92table%E5%8F%82%E6%95%B0/

1.lua

function showstr(str2)  
print("The string you input is " .. str2.name)  
end 

 

1.c

 gcc -o 1 1.c  -llua-5.1
#include <stdio.h>  
  
  
//lua头文件  
#ifdef __cplusplus  
    extern "C" {  
#include "lua.h"    
#include <lauxlib.h>     
#include <lualib.h>     
}    
#else  
#include <lua.h>  
#include <lualib.h>  
#include <lauxlib.h>  
#endif  
 
  /*
  lua -> c 
  https://www.cnblogs.com/coderkian/p/4057750.html

    https://www.cnblogs.com/pied/archive/2012/10/26/2741601.html
    gcc -o lua lua.c  -llua-5.1

    https://www.cnblogs.com/sevenyuan/p/4511808.html
  */
  
int main(int argc,char ** argv)  
{  
  
    lua_State * L=NULL;  
  
    /* 初始化 Lua */    
    L = lua_open();    
  
    /* 载入Lua基本库 */    
    luaL_openlibs(L);     
  
     
    /* 运行脚本 */    
   int error = luaL_dofile(L, "./1.lua");
    if(error) {
        perror("luaL_dofile error");
        return 1;
    }

    lua_getglobal(L,"showstr"); 
    lua_newtable(L); // 创建一个table
    lua_pushstring(L, "name");  //key为intVal
    lua_pushinteger(L,1234);      //值为1234
    lua_settable(L, -3);          //写入table

    lua_pcall(L,1,0,0);  
    
    /* 清除Lua */    
    lua_close(L);     
  
    return 1;  
}  

 

以上是关于c 调用 lua 向lua函数 传递table的主要内容,如果未能解决你的问题,请参考以下文章

lua函数调用

如何使用 cffi-lua 向/从 C 函数传递 Lua 表

C调用lua的table里面的函数

Lua 模块与包 调用c程序.so文件

Lua中调用C函数

Lua极简入门(六)——函数的参数