Lua 与 C 交互入门
1. 简介
Lua 与 C/C++结合是很紧密的, Lua 与 C++交互是建立在 Lua 与 C 的基础上的, 所
以偶先从 Lua 与 C 讲起.
正如第一讲所说, 运行 Lua 程序或者说调用 Lua 主要有两种方式:
* 通过命令行执行"Lua"命令
* 通过 Lua 的 C 库
虽然此前偶们一直用第一种方式, 但偶要告诉你, 通过 Lua 的 C 库执行才是游戏中
常用的方式.
2.Lua 的 C 库
Lua 的 C 库可以做为 Shared Library 调用, 但一般开发游戏时会把 Lua 的所有源程序
都包含在内, 并不把 Lua 编译成共享库的形式. 因为 Lua 程序只有 100 多 K, 而且几乎
可以在任何编译器下 Clean Compile. 带 Lua 源程序的另一个好处时, 可以随时对
Lua
本身进行扩充, 增加偶们所需的功能.
Lua 的 C 库提供一系列 API:
* 管理全局变量
* 管理 tables
* 调用函数
* 定义新函数, 这也可以完全由 C 实现
* 垃圾收集器 Garbage collector, 虽然 Lua 可以自动进行, 但往往不是立即执行的,
所以对实时性要求比较高的程序, 会自己调用垃圾收集器
* 载入并执行 Lua 程序, 这也可以由 Lua 自身实现
* 任何 Lua 可以实现的功能, 都可以通过 Lua 的 C API 实现, 这对于优化程序的运行速
度
有帮助. 经常调用的共用的 Lua 程序片断可以转成 C 程序, 以提高效率. 连 Lua 都是 C
写的
还有什么 C 不能实现呢?
3.Lua 与 C 集成的例子
例 e10.c
/* A simple Lua interpreter. */
#include <stdio.h>
#include <lua.h>
int main(int argc, char *argv[]) {
char line[BUFSIZ];
lua_State *L = lua_open(0);