
(Lua 笔记):C 包
发布日期:2021-05-07 15:16:23
浏览次数:16
分类:原创文章
本文共 725 字,大约阅读时间需要 2 分钟。
C 包
- Lua和C是很容易结合的,使用 C 为 Lua 写包。
- 与Lua中写包不同,C包在使用以前必须首先加载并连接,在大多数系统中最容易的实现方式是通过动态连接库机制。
- Lua在一个叫loadlib的函数内提供了所有的动态连接的功能。
- 这个函数有两个参数:库的绝对路径和初始化函数。
- 所以典型的调用的例子如下:
local path = "/usr/local/lua/lib/libluasocket.so"local f = loadlib(path, "luaopen_socket")
- loadlib 函数加载指定的库并且连接到 Lua,然而它并不打开库(也就是说没有调用初始化函数),反之他返回初始化函数作为 Lua 的一个函数,这样我们就可以直接在Lua中调用他。
- 如果加载动态库或者查找初始化函数时出错,loadlib 将返回 nil 和错误信息。
- 可以修改前面一段代码,使其检测错误然后调用初始化函数:
local path = "/usr/local/lua/lib/libluasocket.so"-- 或者 path = "C:\\windows\\luasocket.dll",这是 Window 平台下local f = assert(loadlib(path, "luaopen_socket"))f() -- 真正打开库
- 一般情况下期望二进制的发布库包含一个与前面代码段相似的 stub 文件,安装二进制库的时候可以随便放在某个目录,只需要修改 stub 文件对应二进制库的实际路径即可。
- 将 stub 文件所在的目录加入到 LUA_PATH,这样设定后就可以使用 require 函数加载 C 库了。
- 【注】:参考
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月12日 15时08分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
.net Core 使用IHttpClientFactory请求
2021-05-09
多线程之旅(准备阶段)
2021-05-09
Python 之网络式编程
2021-05-09
MySql5.5安装步骤及MySql_Front视图配置
2021-05-09
springmvc Controller详解
2021-05-09
mybatis #{}和${}区别
2021-05-09
Java Objects工具类重点方法使用
2021-05-09
Java内存模型(JMM)
2021-05-09
AQS相关
2021-05-09
abp(net core)+easyui+efcore实现仓储管理系统——多语言(十)
2021-05-09
WCF学习之旅—第三个示例之一(二十七)
2021-05-09
java ThreadPoolExecutor初探
2021-05-09
Markdown进阶
2021-05-09
快速指数算法
2021-05-09
python去除字符串中的特殊字符(爬虫存储数据时会遇到不能作为文件名的字符串)
2021-05-09
PHP将网址快捷方式保存到桌面
2021-05-09