Lua 高级教程——Lua 与 C/C++ 交互(核心高级技能)
Lua 设计目标是嵌入 C/C++,通过 Lua C API 实现双向调用(Lua 调 C、C 调 Lua)。1. 核心概念:Lua 栈
[*]Lua 与 C 数据交换通过栈完成(后进先出)。
[*]C 用 lua_push* 压栈,lua_to* 读栈。
2. 示例:C 写函数,Lua 调用
(1)C 代码(mylib.c)
#include <lua.h>
#include <lauxlib.h>
// C 函数:加法
static int l_add(lua_State *L) {
int a = lua_tointeger(L, 1);// 读栈第1个参数
int b = lua_tointeger(L, 2);// 读栈第2个参数
lua_pushinteger(L, a + b); // 结果压栈
return 1;// 返回值个数
}
// 注册函数到 Lua
int luaopen_mylib(lua_State *L) {
lua_register(L, "add", l_add);
return 0;
}(2)编译动态库
# Linux
gcc -shared -fPIC -o mylib.so mylib.c -llua
# Windows(MinGW)
gcc -shared -o mylib.dll mylib.c -llua(3)Lua 调用
local mylib = require("mylib")
print(add(10, 20))-- 30
感谢分享,学习了! 不错不错,支持一下!
页:
[1]