我会尽快公开我的问题。我试图在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的构建工具,我得到如下:

注:curljni.c使得函数调用libcurl库中和它的easy.h和curl.h文件。然后它们被包含在文件的顶部。
我也试着问整个库获取加载到我的Android应用程序,使用LOCAL_WHOLE_STATIC_LIBRARIES代替LOCAL_STATIC_LIBRARIES,但没有更多的成功:

以前:
下载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,当我有时间的时候我会放弃它。感谢您的链接。 –
博主尝试在Android上移植curl库并在应用中使用,构建卷曲库后将相关文件放入JNI文件夹,配置Android.mk。但使用NDK构建工具时出现对函数的未定义引用问题,尝试多种方法仍未解决,怀疑是架构问题,还提及使用下载的.a文件可正常工作。
8333

被折叠的 条评论
为什么被折叠?



