当使用较新的NDK编译带OpenCV的工程时会遇到编译问题。
android undefined reference to 'std::basic_ostream<char, std::char_traits<char> >
有两种解决办法:
- (1)在你的gradle中加入如下代码,这只对NDK 18rc以下的版本有效
externalNativeBuild {
cmake {
cppFlags "-std=c++11"
arguments "-DANDROID_STL=gnustl_static"
}
}
- (2)对NDK 18rc以上的版本,gnustl_static已经不再支持,只能重新编译OpenCV
cd $OPENCV_SRC
mkdir build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=$ANDROID_DIR/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_ABI="arm64-v8a" -DANDROID_STL=c++_static -DCMAKE_BUILD_TYPE=Release -DANDROID_NATIVE_API_LEVEL=android-24
make install
cd install #the sdk will be here...