我正在使用android ndk,我在构建项目时遇到了这个错误:
error: undefined reference to 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_destroy(std::allocator<char> const&)'
/home/khoa/ndk/android-ndk-r9c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/khoa/Khoa/OpenCV-2.4.9-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(mathfuncs.cpp.o): in function cv::magnitude(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&):mathfuncs.cpp(.text._ZN2cv9magnitudeERKNS_11_InputArrayES2_RKNS_12_OutputArrayE+0x278): error: undefined reference to 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_destroy(std::allocator<char> const&)'
/home/khoa/ndk/android-ndk-r9c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/khoa/Khoa/OpenCV-2.4.9-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_core.a(mathfuncs.cpp.o): in function cv::magnitude(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&):mathfuncs.cpp(.text._ZN2cv9magnitudeERKNS_11_InputArrayES2_RKNS_12_OutputArrayE+0x2aa): error: undefined reference to 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_destroy(std::allocator<char> const&)'
在Application.mk中我添加了:
APP_STL := gnustl_static
APP_STL := -lsupc++
APP_STL := stlport_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM := android-8
这是我的Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
OPENCV_LIB_TYPE:=STATIC
OPENCV_INSTALL_MODULES:=on
OPENCV_CAMERA_MODULES:=off
include /home/khoa/Khoa/OpenCV-2.4.9-android-sdk/sdk/native/jni/OpenCV.mk
LOCAL_C_INCLUDES += ${NDKROOT}/sources/cxx-stl/stlport/stlport
LOCAL_MODULE := csp
LOCAL_SRC_FILES := csp.cpp
LOCAL_LDLIBS += -llog -ldl
include $(BUILD_SHARED_LIBRARY)
我该如何解决这个问题?
答案 0 :(得分:1)
除非您使用不同的工具链重建libopencv_core.a
,否则应使用 gnustl_static 。
<强> Application.mk 强>
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM := android-9
<强> Android.mk 强>
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
OPENCV_LIB_TYPE:=STATIC
OPENCV_INSTALL_MODULES:=on
OPENCV_CAMERA_MODULES:=off
include /home/khoa/Khoa/OpenCV-2.4.9-android-sdk/sdk/native/jni/OpenCV.mk
LOCAL_MODULE := csp
LOCAL_SRC_FILES := csp.cpp
LOCAL_LDLIBS += -llog -ldl
include $(BUILD_SHARED_LIBRARY)
有关详细信息和可帮助您设置环境的实际屏幕截图,请参阅opecv documents。
如果某些事情不明确,或者此更改无法解决所有构建问题,请不要犹豫要求提供详细信息。如果出现问题,请发布使用ndk-build V=1
创建的构建日志。