查看: 38|回复: 2

Lua 高级教程——Lua 与 C/C++ 交互(核心高级技能)

[复制链接]

48

主题

75

回帖

1991

积分

金牌会员

积分
1991
QQ
发表于 2026-5-27 14:19:19 | 显示全部楼层 |阅读模式
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



0

主题

58

回帖

1350

积分

金牌会员

积分
1350
发表于 2026-5-28 16:51:42 | 显示全部楼层
感谢分享,学习了!

0

主题

58

回帖

1350

积分

金牌会员

积分
1350
发表于 2026-5-29 08:45:42 | 显示全部楼层
不错不错,支持一下!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表