假设lua中:

name="gzw"
id=17010805
sex=man tab={
num=100,
str="hello"
} foo_one=function()
print("不带参数的foo()被调用了")
end foo_two=function(num)
print("num=",num)
return num
end

接下来要在C++中调用lua.

首先看调用全局变量:

int main()
{
lua_State* L=luaL_newstate(); //创建lua虚拟栈
luaL_openlibs(L); //打开需要链接的库
luaL_dofile(L,"a.lua");
lua_getglobal(L,"name"); //把lua中的全局变量name拿出来压入了虚拟栈中
lua_getglobal(L,"id");
printf("栈中元素个数为:%d\n",lua_gettop(L)); //得到栈顶的索引,相当于求栈的长度 const char* str=lua_tostring(L,1); //压入的为字符长,所以根据索引转化打印
int id=lua_tonumber(L,2);
printf("str=%s\n",str);
printf("id=%d\n",id); lua_close(L);
return 0;
}

接下来看C++调用lua表中的字段

lua_getglobal(L,"tab");
lua_pushstring(L,"str"); lua_gettable(L,-2); printf("tab.str=%s\n",lua_tostring(L,-1));
lua_pop(L,1);
lua_pushstring(L,"num");
lua_gettable(L,-2); printf("tab.num=%g\n",lua_tonumber(L,-1));

lua_gettable(L,Index)   index指的是表,执行这句话会把栈顶元素当成键,根据这个键把对应的值找到,然后把值压入表中,也就是执行完这段后,栈顶元素为tab,但是里面有了值.

lua_getfield(L,-1,"num");这句等价于 lua_pushstring(L,-1,“num”); lua_gettable(L,-2);

C++调用lua中的函数:

lua_getglobal(L,"foo_one");

lua_pcall(L,0,0,0); 

lua_getglobal(L,"foo_two");
lua_pushnumber(L,123);
lua_pcall(L,1,1,0);

最新文章

  1. jackson简单使用,对象转json,json转对象,json转list
  2. bzoj 2287: 【POJ Challenge】消失之物
  3. Android Paint类方法说明
  4. Android显示等宽图片的问题
  5. HDU 5422 Rikka with Graph
  6. PowerDesigner 12.5 反向工程sql server
  7. Apache Spark BlinkDB
  8. 同样的JS写法,为啥只有IE9模式正常?
  9. java常量设置的方式
  10. Windows下visual studio code搭建golang开发环境
  11. MINIGUI 编译 helloworld
  12. CF 322A Ciel and Dancing 好简单的题。。最喜欢水题了
  13. 第一章:Netty介绍
  14. Node.js中的异步I/O是如何进行的?
  15. Django(九)下:Ajax操作、图片验证码、KindEditor使用
  16. 帆软报表(FineReport)实现跨数据源父子查询(2阶段查询)
  17. usrp-B210
  18. golang 实现延迟消息原理与方法
  19. 【ORACLE 】 ORA-00031 标记要删去的会话(解决)
  20. webpack快速入门——CSS进阶,Less文件的打包和分离

热门文章

  1. IDEA安装vue.js插件后,new没有Vue component
  2. 自己常用的CMake用法总结
  3. 【九度OJ】题目1175:打牌 解题报告
  4. 【LeetCode】336. Palindrome Pairs 解题报告(Python)
  5. 【LeetCode】841. Keys and Rooms 解题报告(Python & C++)
  6. Docker 与 K8S学习笔记(六)—— 容器的资源限制
  7. MySQL 中的共享表空间与独立表空间
  8. 01 Java基础
  9. Eclipse中英文对照表(整理笔记)
  10. 【】Kerberos原理--经典对话