【发布时间】:2019-01-26 06:45:49
【问题描述】:
我正在将 OpenCV 库从 3.2.0 迁移到 4.0.1。在这个过程中发现很多宏已经被重新定义为更多的 C++ 风格,比如 CV_BGR2RGB 现在是 COLOR_BGR2RGB。
目前在尝试链接../native/libs/x86_64/libopencv_java4.so时遇到以下链接错误
native/jni/include\opencv2/core/mat.inl.hpp:548: error: undefined reference to 'cv::error(int, std::string const&, char const*, char const*, int)'
native/jni/include\opencv2/core/mat.inl.hpp:561: error: undefined reference to 'cv::error(int, std::string const&, char const*, char const*, int)'
xxx_std.h:355: error: undefined reference to 'cv::putText(cv::_InputOutputArray const&, std::string const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)'
LabelUtils.cpp:1225: error: undefined reference to 'cv::putText(cv::_InputOutputArray const&, std::string const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)'
LabelUtils.cpp:2512: error: undefined reference to 'cv::imwrite(std::string const&, cv::_InputArray const&, std::vector<int, std::allocator<int> > const&)'
TrackingCodeDeSkew.cpp:553: error: undefined reference to 'cv::putText(cv::_InputOutputArray const&, std::string const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)'
TrackingCodeDeSkew.cpp:557: error: undefined reference to 'cv::putText(cv::_InputOutputArray const&, std::string const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)'
这是链接器命令行
C:\Users\koush\AppData\Local\Android\Sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=x86_64-none-linux-android --gcc-toolchain=C:/Users/koush/AppData/Local/Android/Sdk/ndk-bundle/toolchains/x86_64-4.9/prebuilt/windows-x86_64 --sysroot=C:/Users/koush/AppData/Local/Android/Sdk/ndk-bundle/sysroot -fPIC -isystem C:/Users/koush/AppData/Local/Android/Sdk/ndk-bundle/sysroot/usr/include/x86_64-linux-android -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat
<<list of generated object files>> -llog OpenCV401/native/libs/x86_64/libopencv_java4.so src/main/jniLibs/x86_64/libzbarjni.so src/main/jniLibs/x86_64/libiconv.so -landroid -latomic -lm "C:/Users/koush/AppData/Local/Android/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86_64/libsupc++.a" "C:/Users/koush/AppData/Local/Android/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86_64
/libgnustl_shared.so"
【问题讨论】:
-
由于时间不够,我已经升级到3.4.5,保留了类似于OpenCV 3.2.0的分发格式。未报告任何错误。