国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

zlib的minizip和lua 5.1.4安卓編譯需要改動的地方

2019-11-08 02:09:32
字體:
來源:轉載
供稿:網友

近期有一個用到了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(stream) ftello64(stream)#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin)#else#define FOPEN_FUNC(filename, mode) fopen(filename, mode)#define FTELLO_FUNC(stream) ftello(stream)#define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin)#endif

這樣就可以編譯通過了,也不影響windows端的編譯.

然后是lua5.1.4的編譯,

其在llex.c 的第181的localeconv()函數會報錯,找不到此函數,這個返回包含本地數字及貨幣信息格式的數組,具體有啥用我也還不太清楚,我將其改為NULL,

然后183行的decimal_point也會沒有,在Linux里面其實就是點,所以只需改為如下:

#ifdef _WINDLL  struct lconv *cv = localeconv();  char old = ls->decpoint;  ls->decpoint = (cv ? cv->[0] : '.');#else  struct lconv *cv = NULL;  char old = ls->decpoint;  ls->decpoint = '.';#endif

即可編譯通過,經測試我用到的的功能也沒有受到影響.


上一篇:文章標題

下一篇:語句-綜合練習題目

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蛟河市| 顺平县| 无为县| 梓潼县| 宜兰市| 佛山市| 抚松县| 吉安市| 宣武区| 富宁县| 沂水县| 新和县| 怀远县| 岳阳县| 元谋县| 庆阳市| 白城市| 邹平县| 江津市| 秦皇岛市| 辽中县| 双鸭山市| 威海市| 资阳市| 罗定市| 霞浦县| 荣昌县| 呈贡县| 宝山区| 文昌市| 循化| 宁国市| 延长县| 麦盖提县| 东乌珠穆沁旗| 台东县| 深圳市| 南江县| 平顺县| 淮滨县| 永德县|