ndk编译报错,是输出日志的错,
Android NDK: WARNING: APP_PLATFORM android-19 is larger than android:minSdkVersion 14 in ./AndroidManifest.xml
[armeabi-v7a] Compile++ thumb: SeetafaceSo <= Seetaface_JniClient.cpp
In file included from jni/CMImgProc.h:19:0,
from jni/Seetaface_JniClient.cpp:14:
jni/Seetaface_JniClient.cpp: In function '_jbyteArray* Java_seetaface_SeetaFace_CMCropFace(JNIEnv*, jobject, jbyteArray, jint, jint, jint, jstring, jobject)':
jni/ndk_log.h:4:77: error: cannot pass objects of non-trivially-copyable type 'std::string {aka class std::basic_string<char>}' through '...'
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
^
jni/Seetaface_JniClient.cpp:1028:2: note: in expansion of macro 'LOGD'
LOGD("tRetFacePosStr=%s", tRetFacePosStr );
^
jni/ndk_log.h:4:77: warning: format '%s' expects argument of type 'char*', but argument 4 has type 'std::string {aka std::basic_string<char>}' [-Wformat=]
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
^
jni/Seetaface_JniClient.cpp:1028:2: note: in expansion of macro 'LOGD'
LOGD("tRetFacePosStr=%s", tRetFacePosStr );
^
make.exe: *** [obj/local/armeabi-v7a/objs/SeetafaceSo/Seetaface_JniClient.o] Error 1
原来是这一行的错:
LOGD("tRetFacePosStr=%s", tRetFacePosStr );
因为tRetFacePosStr 是string类型的,不是char*类型,
解决方法:
LOGD("tRetFacePosStr=%s", tRetFacePosStr.c_str());