Lua如何高效调用C语言编写的函数?

2026-04-01 18:480阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1506个文字,预计阅读时间需要7分钟。

Lua如何高效调用C语言编写的函数?

【Lua学习】Lua中调用C函数+Lua利用一个虚拟的栈栈来给C传递值或从C获取值。每当Lua调用C函数时,都会获得一个新的栈,该栈最初包含传递给C函数的所有参数值(Lua传递给C函数)。

Lua中调用C函数

 Lua利用一个虚拟的堆栈来给C传递值或从C获取值。每当Lua调用C函数,都会获得一个新的堆栈,该堆栈初始包含所有的调用C函数所需要的参数值(Lua传给C函数的调用实参),并且C函数执行完毕后,会把返回值压入这个栈(Lua从中拿到C函数调用结果)。
 于此相关的C API有几个比较重要的定义如下:

(1)typedef struct lua_State lua_State;

 lua虚拟机(或叫解释器),可以理解为一个thread,和一个完整的Lua虚拟环境的执行状态。

Lua如何高效调用C语言编写的函数?

(2)typedef int (*lua_CFunction) (lua_State *L);

能够被Lua调用的C函数都必须是这种规则。函数的返回的int值表示C函数返回值的个数。

阅读全文
标签:lua学习

本文共计1506个文字,预计阅读时间需要7分钟。

Lua如何高效调用C语言编写的函数?

【Lua学习】Lua中调用C函数+Lua利用一个虚拟的栈栈来给C传递值或从C获取值。每当Lua调用C函数时,都会获得一个新的栈,该栈最初包含传递给C函数的所有参数值(Lua传递给C函数)。

Lua中调用C函数

 Lua利用一个虚拟的堆栈来给C传递值或从C获取值。每当Lua调用C函数,都会获得一个新的堆栈,该堆栈初始包含所有的调用C函数所需要的参数值(Lua传给C函数的调用实参),并且C函数执行完毕后,会把返回值压入这个栈(Lua从中拿到C函数调用结果)。
 于此相关的C API有几个比较重要的定义如下:

(1)typedef struct lua_State lua_State;

 lua虚拟机(或叫解释器),可以理解为一个thread,和一个完整的Lua虚拟环境的执行状态。

Lua如何高效调用C语言编写的函数?

(2)typedef int (*lua_CFunction) (lua_State *L);

能够被Lua调用的C函数都必须是这种规则。函数的返回的int值表示C函数返回值的个数。

阅读全文
标签:lua学习