Lua调用C++,初探

本文介绍了如何在Lua中调用C++函数,详细解析了C++函数如何注册到Lua虚拟机,以及参数和返回值的传递方式。通过示例代码展示了如何编写C++的binding函数,并解释了lua调用C++时栈的状态变化。
摘要由CSDN通过智能技术生成
lua要调用C函数,需要将C函数告诉lua虚拟机(也就是注册到虚拟机),这样lua的脚本就可以调用C函数了。
同样为了方便,函数的调用需要的参数和返回的参数也都是通过栈来完成的。
每次lua调向C的时候,栈中的数据只有方法的参数,其他的多余的数据都清空了,吗吗??。

比如给lua注册了一个函数名是cpp_func,对应的函数是testLuaCallCpp(int a,int b);
那么lua里面直接写cpp_func(1,2);就调用了testLuaCallCpp函数了。不管参数是几个都是调用这个函数,因为虚拟机里保存了这个"cpp_func"的key就对应testLuaCallCpp函数的指针了。


下面给详细的代码:
#include "TestLuaCallCpp.h"
#include "LuaUtiles.h"

//
// 下面这2个函数就是普通的C函数
// 但lua只能调用typedef int(*lua_CFunction) (lua_State *L); 这种函数.
// 返回值描述参数的个数。
// 所以,我们需要自己写一个binding,来透传这些调用事件
// 这种自己写binding的方法,就相当于在我们原来代码的基础上,提供了lua接口了
//

// 返回a+b的值
int functionForLuaCall_add(int a,int b)
{
	return a+b;
}
// 测试多返回值
bool functionForLuaCall_loadAB(int* num1,int* num2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值