总览与准备
本指南由 Kimi K2.6 编写生成。
仓库地址:https://github.com/qaqland/lua-c-api-guide
什么是 Lua C API
Lua 被设计为一个可嵌入的脚本语言。它提供了一组 C 语言接口,允许宿主程序(Host Program):
- 创建和销毁 Lua 状态机(
lua_State) - 在 C 和 Lua 之间传递数据
- 从 C 调用 Lua 函数
- 将 C 函数暴露给 Lua 脚本
- 操作 Lua 中的 table、userdata、metatable 等高级类型
关键头文件
只需关注两个头文件:
| 头文件 | 作用 |
|---|---|
lua.h | 核心 API。所有以 lua_ 开头的函数 |
lauxlib.h | 辅助库(auxiliary library)。以 luaL_ 开头的辅助函数,让代码更简洁安全 |
通常 C 文件顶部只需要:
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h> // 如需打开标准库
编译环境
需要预先安装 Lua 5.4 开发包(如 lua5.4-dev)。下面介绍两种编译方式:手动用 gcc,以及本指南使用的
Meson。
手动编译
通过 pkg-config 获取头文件和库路径,手动调用 gcc:
gcc 00-overview.c $(pkg-config --cflags --libs lua5.4) -o 00-overview
./00-overview
Meson(本指南使用)
Meson 自动通过 pkg-config 获取 Lua 5.4 的编译参数,无需手动指定 -I、-L、-l:
meson setup build
meson compile -C build
./build/src/01_stack
最小可运行程序
#include <lua.h>
#include <stdio.h>
int main(void) {
printf("Lua version: %.0f\n", lua_version(NULL));
return 0;
}
这个程序只打印 Lua 版本号,验证开发环境是否正确链接了 Lua 库。后续章节会逐步介绍状态机的创建、使用和销毁。
参考资源
源码头文件(Lua 5.4 官方仓库):
致谢
感谢 st0nie 提供支持。