【问题标题】:Android OpenCV Linking CXX shared library failsAndroid OpenCV 链接 CXX 共享库失败
【发布时间】:2019-04-19 08:05:39
【问题描述】:

我有一个正常工作的 Android Studio 安装,我正在使用本机 C++ 代码和 OpenCV 编写一个应用程序。我停止了一年的开发并在几天前恢复了它。

由于 Android Studio 抱怨有可用更新,我决定更新所有内容(Gradle、CMake、NDK...),这是我的错误。现在构建在链接阶段停止:

Build command failed.
Error while executing process C:\Users\Marco\AppData\Local\Android\Sdk\cmake\3.6.4111459\bin\cmake.exe with arguments {--build C:\Users\Marco\AndroidStudioProjects\MyProject\app\.externalNativeBuild\cmake\debug\x86_64 --target CppFilter}
[1/2] Building CXX object CMakeFiles/CppFilter.dir/src/main/cpp/CppFilter.cpp.o
[2/2] Linking CXX shared library ..\..\..\..\build\intermediates\cmake\debug\obj\x86_64\libCppFilter.so
FAILED: cmd.exe /C "cd . && C:\Users\Marco\AppData\Local\Android\Sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe  --target=x86_64-none-linux-android21 --gcc-toolchain=C:/Users/Marco/AppData/Local/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64 --sysroot=C:/Users/Marco/AppData/Local/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -stdlib=libc++ -O3 -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now  -Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a -shared -Wl,-soname,libCppFilter.so -o ..\..\..\..\build\intermediates\cmake\debug\obj\x86_64\libCppFilter.so @CMakeFiles/CppFilter.rsp  && cd ."
D:/Downloads/opencv-3.3.1-android-sdk/OpenCV-android-sdk/sdk/native/libs/x86_64/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::cerr'

D:/Downloads/opencv-3.3.1-android-sdk/OpenCV-android-sdk/sdk/native/libs/x86_64/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): 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*, long)'

D:/Downloads/opencv-3.3.1-android-sdk/OpenCV-android-sdk/sdk/native/libs/x86_64/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::ostream::put(char)'

D:/Downloads/opencv-3.3.1-android-sdk/OpenCV-android-sdk/sdk/native/libs/x86_64/libopencv_core.a(system.cpp.o):system.cpp:function cv::ipp::IPPInitSingleton::IPPInitSingleton(): error: undefined reference to 'std::ostream::flush()'

... many more of the same type ...

clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)

ninja: build stopped: subcommand failed.

我基本上按照说明的默认设置步骤进行操作,例如:

关于什么可能导致此错误的任何想法?

Android Studio 实际版本:3.4,旧版本:2.something

【问题讨论】:

    标签: android c++ opencv


    【解决方案1】:

    显然这是由于 OpenCV 版本 (3.3.1) 的编译方式与较新版本的 NDK 或 Android SDK 构建工具不兼容,例如:Why am I still getting undefined reference errors linking a static library with CMake in Android NDK?

    我降级了 NDK 和 Android SDK 构建工具。现在它正在工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 2019-08-23
      • 1970-01-01
      • 2015-04-06
      相关资源
      最近更新 更多