zlib的minizip和lua 5.1.4安卓编译需要改动的地方

在将zlib的minizip和lua 5.1.4编译为安卓平台的so文件时遇到问题,主要涉及到fopen64、ftello64和fseeko64函数未定义以及lua的localeconv函数缺失。通过宏定义和条件编译解决了minizip中Linux与Windows的兼容性问题,并将lua中的localeconv替换为NULL,decpoint改为'.',成功编译并保持功能正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近期有一个用到了zlip的压缩和lua的dll需要编译到安卓平台下用,就使用SWIG做了转换,然后使用QT MinGW编译so文件.

swig转换很顺利.没有碰到什么问题,但是编译so确碰到了一些问题,网上查找相关资料也不是特别多,零零散散的,导致解决问题也不是很顺利,在此做下记录.

编译单纯得zlip的源码没啥问题,但是因为我里面用到了minizip来操作文件,它对于Linux的编译就没有做很好的适配,将其的代码加入QT工程里面编译,会报如下错误:

\ioapi.c:127: error: undefined reference to 'fopen64'

\ioapi.c:157: error: undefined reference to 'ftello64'

\ioapi.c:203: error: undefined reference to 'fseeko64'

都是来自ioapi.c的三个函数,这里找不到对应的函数,在Linux里面其对应的是没有64 的函数 也就是将其加宏控制 

#ifdef _WINDLL
#define FOPEN_FUNC(filename, mode) fopen64(filename, mode)
#define FTELLO_FUNC(s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值