Lua与C++的交互

Lua和C++ 的交互机制的基础在于Lua提供了一个虚拟栈,C++ 和Lua之间的所有类型的数据交换都通过这个栈完成。

C++ 调用 Lua

C++ 可以获取Lua中的值,可以调用Lua函数,还可以修改Lua文件

1)C获取Lua值

  1. 使用lua_getglocal来获取值,然后将其压栈
  2. 使用C API lua_toXXX将栈中元素取出转成相应的C类型的值

如果Lua值为table类型的话,通过lua_getfield和lua_setfield获取和修改表中元素的值

2)C调用Lua函数

  1. 使用lua_getglobal来获取函数,然后将其压入栈;
  2. 如果这个函数有参数的话,就需要依次将函数的参数也压入栈;
  3. 这些准备工作都准备就绪以后,就调用lua_pcall开始调用函数了,调用完成以后,会将返回值压入栈中;
  4. 最后取返回值得过程不用多说了,调用完毕。

Lua 调用 C++

Lua可以调用由C++定义、实现具体的函数 
步骤: 
1. 将C的函数包装成Lua环境认可的函数 
2. 将包装好的函数注册到Lua环境中 

3. 像使用普通Lua函数那样使用注册函数

引用:

https://blog.csdn.net/v_xchen_v/article/details/77249332

https://blog.csdn.net/zhuzhuyule/article/details/41086745


第三方的软件包

tolua++,luabind,LuaTinker,luaplus

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值