调用c文件
# 前言
由于在使用lua5.1的string.format()
发现将 number转为string时, 如果number过长达到14位就有可能会导致结果的后几位不正确, 网上查到使用lua作者的写的脚本可以解决, 然后做了尝试
# 安装gcc
brew install gcc
1
# 操作脚本
# 下载
点开脚本链接 (opens new window) , 找到lint64
下载并解压, 我们得到以下文件
lint64-101
├── Makefile 打包文件
├── README 使用说明
├── lint64.c 需要调用的c文件
├── mycompat.h
└── test.lua 测试文件
1
2
3
4
5
6
2
3
4
5
6
# 修改配置信息
打开Makefile
修改
# lua安装路径
LUA_TOPDIR= /usr/local/Cellar/lua@5.1/5.1.5_8
# 可执行文件
LUA_INCDIR= $(LUA_TOPDIR)/include/lua-5.1
LUA_BINDIR= $(LUA_TOPDIR)/bin
LIBDIR= $(LUA_TOPDIR)/lib/lua/5.1
LUA= $(LUA_BINDIR)/lua5.1
1
2
3
4
5
6
7
2
3
4
5
6
7
# 打包生成lua可执行文件
查看 Makefile
文件可知 mac 系统需使用 Darwin
指令, 运行 make Darwin
得到int64.so
文件
# 运行 test
运行lua test
, 输出结果则证明成功
# 在kong中调用so文件
将文件复制到 /usr/local/Cellar/kong/2.3.3/lib/lua/5.1
中在程序中直接引用即可
local int64 = require "int64"
local str = int64.new(123213112)
int64.tostring(str)
1
2
3
2
3
# 结语
虽然最后没有成功, 但是这个过程还是很有意思的
上次更新: 2021/06/03, 15:07:32