Lua笔记——8.Lua & C

Lua是一门嵌入式语言,提供了完备的 C API 方便 Lua 代码和其他宿主程序相互调用来扩展程序功能。在C中嵌入Lua脚本可以让用户在不重新编译代码的情况下只修改Lua代码来更新程序。在Lua中调用C函数则可以提高程序的运行效率。

  • 操作环境:根据自己使用的环境来配置lua.(这里使用Win + VS,Lua 使用5.3版本)

  • 理解C API:Lua和C交互的部分称为C API。C API是一个C代码与Lua进行交互的函数集。在C/C++中使用Lua C API 时,需要引入的Lua头文件:
    1. lua.h:主要包含Lua的基础函数,以 lua_ 开头
    2. lauxlib.h:(lua auxiliary library 即lauxlib)主要包含Lua的辅助函数,以 luaL_ 开头
    3. lualib.h:主要包含Lua打开内置库的函数
  • 理解Lua堆栈:Lua和C之间通过一个抽象的Lua栈(lua_State *L)来进行数据交换,Lua和C之间的相互调用,即是通过Lua C API 来对Lua栈进行操作。
    1. Lua代码中,严格遵守Lua栈的LIFO原则,只能操作栈顶元素
    2. C代码中,可以操作Lua栈中任意元素,即可以在栈的任意位置删除和插入元素
    3. Lua栈中可以存放各种类型的变量,例如number、string、函数、线程等

C调用Lua

在C代码中调用Lua的基本流程为:

  1. 引入Lua头文件
  2. 创建Lua栈
  3. 打开所需的Lua库
  4. 加载Lua代码
  5. 执行Lua代码
  6. 获取Lua代码执行结果
  7. 关闭Lua栈

Lua调用C

通过在C中注册函数给lua调用

封装成c动态链接库,在lua中require

在LuaJIT里面可以使用ffi高性能的调用C

REF

博客:

https://www.jb51.net/article/132851.htm

https://blog.csdn.net/alexwoo0501/article/details/50916037

猜你喜欢

转载自www.cnblogs.com/sylvan/p/9780280.html