Android NDK品牌.数百个“未定义的参考错误”

Android NDK品牌.数百个“未定义的参考错误”,第1张

概述尝试构建此示例项目https://github.com/caffe2/AICameraree/master/app/src/main/cpp时,出现数百个错误:未定义的引用.这是输出的前几行:FAILURE:Buildfailedwithanexception.*Whatwentwrong:Executionfailedfortask':app:externalNativeBuildDebug'.>Buildcom

尝试构建此示例项目https://github.com/caffe2/AICamera/tree/master/app/src/main/cpp时,出现数百个错误:未定义的引用.这是输出的前几行:

FAILURE: Build Failed with an exception.* What went wrong:Execution Failed for task ':app:externalNativeBuildDeBUG'.> Build command Failed.  Error while executing process /home/aIDan/AndroID/Sdk/cmake/3.6.4111459/bin/cmake with arguments {--build /home/aIDan/AndroIDStudioProjects/AICamera/app/.externalNativeBuild/cmake/deBUG/armeabi-v7a --target native-lib}  [1/1] linking CXX shared library ../../../../build/intermediates/cmake/deBUG/obj/armeabi-v7a/libnative-lib.so  Failed: : && /home/aIDan/AndroID/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++  --target=armv7-none-linux-androIDeabi --gcc-toolchain=/home/aIDan/AndroID/Sdk/ndk-bundle/toolchains/arm-linux-androIDeabi-4.9/prebuilt/linux-x86_64 --sysroot=/home/aIDan/AndroID/Sdk/ndk-bundle/sysroot -fPIC -isystem /home/aIDan/AndroID/Sdk/ndk-bundle/sysroot/usr/include/arm-linux-androIDeabi -D__ANDROID_API__=22 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11 -frtti -fexceptions -std=c++11 -O0 -fno-limit-deBUG-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -nostdlib++ --sysroot /home/aIDan/AndroID/Sdk/ndk-bundle/platforms/androID-22/arch-arm -Wl,--build-ID -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--fix-cortex-a8 -Wl,--exclude-libs,@R_99_4035@.a -L/home/aIDan/AndroID/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,Now -shared -Wl,-soname,libnative-lib.so -o ../../../../build/intermediates/cmake/deBUG/obj/armeabi-v7a/libnative-lib.so CMakefiles/native-lib.dir/src/main/cpp/native-lib.cpp.o  -Wl,--whole-archive ../../../../src/main/jnilibs/armeabi-v7a/libCaffe2_cpu.a -Wl,--no-whole-archive ../../../../src/main/jnilibs/armeabi-v7a/libCAFFE2_NNPACK.a ../../../../src/main/jnilibs/armeabi-v7a/libCAFFE2_PTHREADPOol.a ../../../../src/main/jnilibs/armeabi-v7a/libglog.so ../../../../src/main/jnilibs/armeabi-v7a/libprotobuf.a libcpufeatures.a /home/aIDan/AndroID/Sdk/ndk-bundle/platforms/androID-22/arch-arm/usr/lib/liblog.so /home/aIDan/AndroID/Sdk/ndk-bundle/platforms/androID-22/arch-arm/usr/lib/libandroID.so -ldl -latomic -lm "/home/aIDan/AndroID/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/libc++_static.a" "/home/aIDan/AndroID/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/libc++abi.a" "/home/aIDan/AndroID/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/@R_99_4035@.a" "-ldl" && :  ../../../../src/main/jnilibs/armeabi-v7a/libCaffe2_cpu.a(nnpack_ops.cc.o):nnpack_ops.cc:function std::_Sp_counted_deleter<voID*, voID (*)(voID*), std::allocator<voID>, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&): error: undefined reference to 'std::type_info::operator==(std::type_info const&) const'  ../../../../src/main/jnilibs/armeabi-v7a/libCaffe2_cpu.a(nnpack_ops.cc.o):nnpack_ops.cc:function std::_Sp_counted_deleter<voID*, caffe2::Tensor<caffe2::cpuContext>::raw_mutable_data(caffe2::TypeMeta const&)::{lambda(voID*)#1}, std::allocator<voID>, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&): error: undefined reference to 'std::type_info::operator==(std::type_info const&) const'  ../../../../src/main/jnilibs/armeabi-v7a/libCaffe2_cpu.a(nnpack_ops.cc.o):nnpack_ops.cc:function voID caffe2::TypeMeta::_copyNotAllowed<caffe2::Tensor<caffe2::cpuContext> >(voID const*, voID*, unsigned int): error: undefined reference to 'std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'... + 100s of similar lines, all with undefined references

这是我第一次尝试使用AndroID NDK,所以我对此并不陌生,并且在构建C方面经验有限.从我所看到的,这似乎是一个链接错误,因为它似乎找不到标准.由于经验有限,我无法查看如何解决此问题.

这是我的CMakeLists.txt文件

cmake_minimum_required(VERSION 3.4.1)add_library(             native-lib             SHARED             src/main/cpp/native-lib.cpp             )find_library(          androID-lib          androID          )include(AndroIDNdkModules)androID_ndk_import_module_cpufeatures()add_library(    caffe2    STATIC    importED    )set_target_propertIEs(    caffe2    PROPERTIES importED_LOCATION    ${CMAKE_CURRENT_List_DIR}/src/main/jnilibs/${ANDROID_ABI}/libCaffe2_cpu.a    )add_library(    thread_pool    STATIC    importED    )set_target_propertIEs(    thread_pool    PROPERTIES importED_LOCATION    ${CMAKE_CURRENT_List_DIR}/src/main/jnilibs/${ANDROID_ABI}/libCAFFE2_PTHREADPOol.a    )add_library(    glog    SHARED    importED    )set_target_propertIEs(    glog    PROPERTIES importED_LOCATION    ${CMAKE_CURRENT_List_DIR}/src/main/jnilibs/${ANDROID_ABI}/libglog.so    )add_library(    protobuf    SHARED    importED    )set_target_propertIEs(    protobuf    PROPERTIES importED_LOCATION    ${CMAKE_CURRENT_List_DIR}/src/main/jnilibs/${ANDROID_ABI}/libprotobuf.a    )add_library(    NNPACK    STATIC    importED    )set_target_propertIEs(    NNPACK    PROPERTIES importED_LOCATION    ${CMAKE_CURRENT_List_DIR}/src/main/jnilibs/${ANDROID_ABI}/libCAFFE2_NNPACK.a    )include_directorIEs( src/main/cpp )find_library(     log-lib     log     )target_link_librarIEs(                       native-lib                       -Wl,--whole-archive                       caffe2                       -Wl,--no-whole-archive                       NNPACK                       thread_pool                       glog                       protobuf                       cpufeatures                       ${log-lib}                       ${androID-lib})

解决方法:

caffe2 / AICamera本机库是为libgnustl_shared.so(请参见jniLibs)预先构建的,但是您的项目改用libc _static.a.您应该指定

externalNativeBuild {    cmake {        arguments "-DANDROID_STL=gnustl_shared"    }}

在您的build.gradle中,或重建libCaffe2_库.

总结

以上是内存溢出为你收集整理的Android NDK品牌.数百个“未定义的参考错误”全部内容,希望文章能够帮你解决Android NDK品牌.数百个“未定义的参考错误”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1081352.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存