android函数未定义,“对档案中的”(函数)&“的未定义引用不是对象”Android ndk-build...

我会尽快公开我的问题。我试图在Android上移植curl并在我的应用中使用它。我用ARM工具链构建了卷曲库,并进行了配置和制作(几次以确保我第一次没有做错任何事情)。“对档案中的”(函数)&“的未定义引用不是对象”Android ndk-build

我然后继续把新创建的libcurl.a和我curljni.c到我的JNI的文件夹,只要下面的Android.mk:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE:= libcurl

LOCAL_SRC_FILES := libcurl.a

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include/curl

include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := curljni

LOCAL_SRC_FILES := curljni.c

LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/curl

LOCAL_STATIC_LIBRARIES := libcurl

include $(BUILD_SHARED_LIBRARY)

我已经尝试了很多东西我敢肯定它现在看起来不错,但每当我试图建立一个与NDK的构建工具,我得到如下:

aea56adbb38ca4005b336a4fc01c4489.png

注:curljni.c使得函数调用libcurl库中和它的easy.h和curl.h文件。然后它们被包含在文件的顶部。

我也试着问整个库获取加载到我的Android应用程序,使用LOCAL_WHOLE_STATIC_LIBRARIES代替LOCAL_STATIC_LIBRARIES,但没有更多的成功:

cOOYy.png

以前:

下载curl.7.28.0

为ARM 4.6制作了独立工具链

修复了curl中的几个文件,它们的linebreaks是DOS的,并且需要Unix(配置中的bug) - 其中一个是depcomp,链接到libcurl_la-file.lo

./configure --host = arm-linux- androidaebi - -with-的zlib --enable-IPv6的

化妆/ make install的

增加从产生libcurl.a卷曲\ lib.libs

+0

我用了一个下载的.a文件,它工作。但是,我不知道我自己的.a版本有什么错误。 –

+1

“存档中的成员......不是对象”,未定义的引用(即未找到符号)的问题听起来像一个架构问题,即仔细检查你构建libcurl的方式,以便静态库包含'armeabi'目标文件。特别要确保它使用Android工具链中的编译器(请参见幻灯片34,35和36:https://speakerdeck.com/deltheil/running-native-code-on-android-number-osdcfr-2012)。 –

+0

当我使用交叉工具链(尚未使用SYSROOT和BUILD)时,我没有指定CC和CXX,当我有时间的时候我会放弃它。感谢您的链接。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值