如何将C++对象传给lua使用
答案:5 悬赏:70
解决时间 2021-02-11 17:02
- 提问者网友:霸道又专情♚
- 2021-02-11 07:47
如何将C++对象传给lua使用
最佳答案
- 二级知识专家网友:陪伴是最长情的告白
- 2021-02-11 08:33
对象无法传
你看Lua的教程就知道了
Lua支持的不是C++ 是C 而且不是所有的C都支持
本身Lua是用标准C语言开发 所以也只能实现C语言的功能 C++就已经超出范围了
所以要把对象放进去 必须按照一定的格式 逐个把函数和参数放进去 再到Lua按顺序逐个取出
你看Lua的教程就知道了
Lua支持的不是C++ 是C 而且不是所有的C都支持
本身Lua是用标准C语言开发 所以也只能实现C语言的功能 C++就已经超出范围了
所以要把对象放进去 必须按照一定的格式 逐个把函数和参数放进去 再到Lua按顺序逐个取出
全部回答
- 1楼网友:而你却相形见绌
- 2021-02-11 11:26
进来学习一下
- 2楼网友:开心就好
- 2021-02-11 09:50
首先要把你的表放到一个全局变量
然后在c++里使用getglobal 获得这个变量
压入一个key
取出对应刚才key对应的值
百度知道不能帖地址 不然会立即被吞
要是还是不会的话留邮箱我把地址发你
- 3楼网友:零负荷的放任
- 2021-02-11 09:44
可以传递。我自己的项目也在做这个。
不过完全用lua的C API写起来比较痛苦,它是基于栈操作的,一会儿push, 一会儿pop, 很容易把头都搞大了。而且lua不是天生支持面向对象,要实现类的抽象还需要在表和metatable上捣鼓。
不过有很多实现这个功能的库,比如luabind, 用现成的库是最直接的方式。
- 4楼网友:厭世為王
- 2021-02-11 09:38
直接传很麻烦.
到lua官网下载SLB库,此库不需要像别的那样要下载Boost库.直接可用.
用法是有些细节的.我这里简单解释
比如有个类
class CA
{
public :
int fun1(float a);
}
在.h里加上
SLB3_DECLARATION(CA,"classca",policy::Default)
你在cpp里加上
SLB3_IMPLEMENTATION(CA , c) {
c.set("fun1",&LBPreParam::fun1);
}
这样,这个类和 函数就被传入lua,在lua里也能用了.
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯