一天三盒半 发表于 2026-5-27 14:19:19

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



555666888 发表于 2026-5-28 16:51:42

感谢分享,学习了!

555666888 发表于 2026-5-29 08:45:42

不错不错,支持一下!
页: [1]
查看完整版本: Lua 高级教程——Lua 与 C/C++ 交互(核心高级技能)