curl上传文件调试:A libcurl function was given a bad argument

将android4.4的日志上传功能移植到android7.1时,遇到libcurl错误提示‘A libcurl function was given a bad argument’。问题源于7.1和4.4的位数差异,7.1为64位,4.4为32位。通过grep定位错误,发现SIZEOF_SIZE_T未定义,CURL_SIZEOF_CURL_OFF_T在7.1中为8,在4.4中为4。解决方法是针对64位环境进行配置调整,通过#if (8 < CURL_SIZEOF_CURL_OFF_T)条件解决位数问题,成功实现日志上传。
摘要由CSDN通过智能技术生成

使用的libcurl版本为:android7.1–0x073201 android4.4–0x073000

事情缘由

需将android4.4上的日志上传功能移植到android7.1上,但是移植好后出现了如下截图的问题
出现的报错信息

过程

7.1和4.4有一点的区别很重要,那就是参数类型的位数不一样,7.1使用的是64位,4.4用的是32位的。在相同的源码情况下,4.4正常使用,7.1出现了如上截图的问题,那就必须是libcurl库的问题了,使用grep命令找到错误信息出现的位置加上fprintf(stderr,"…")相应的函数名。发现如下图SIZEOF_SIZE_T未定义、CURL_SIZEOF_CURL_OFF_T为8,andoird4.4上的SIZEOF_SIZE_T为4、CURL_SIZEOF_CURL_OFF_T也为4,归根到底就是默认配置的位数不配置导致出错。因此#if (8 < CURL_SIZEOF_CURL_OFF_T)就可以解决问题了,如下图为成功的消息打印。
源码问题位置正常的信息打印
附上正常使用的源码:

/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值