如何将LUA函数和C函数相互调用?
1. 简介
LUA和C之间的函数调用也是基于上一节提到的栈。1.1 从C程序调用LUA函数
LUA的函数和普通变量一样也是First Class Variable类型,可以看作函数指针变量参与栈操作。因此调用过程分为如下几个步骤:- 请求LUA函数(指针)入(GLOBAL)栈。
- 将函数需要的参数入栈,入栈顺序按照参数被声明的顺序。
- 告知LUA虚拟机入栈参数的个数、函数返回值的个数,并调用此LUA函数。
- 从栈定获得返回值,先返回的先入栈,然后将返回值显式出栈。
1.2 从LUA脚本调用C函数
LUA没有提供PYTHON那样丰富的类库,因此复杂的功能需要在C程序中定义好,然后通过lua决定调用时机。在LUA库中定义了可以被LUA虚拟机识别的C函数模型:
int functionName (lua_State* L) {....; return 1;}
本文地址:http://www.45fan.com/a/question/67467.html