ndk-build返回非零值2(已经检查了所有其他堆栈问题!)



我知道有几个问题的标题相同,但在我花了几个小时仔细研究了每一个问题后,我决定发布一个新问题。

我的Android.mk看起来像

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := com_lunaticcoding_colosseum_OpenCv.cpp
LOCAL_LDLIBS += -llog
LOCAL_MODULE := OpenCvFace

include $(BUILD_SHARED_LIBRARY)

我的应用程序.mk

APP_OPTIM := release
APP_PLATFORM := android-21
APP_STL := gnustl_static
APP_CPPFLAGS += -frtti
APP_CPPFLAGS += -fexceptions
APP_CPPFLAGS += -DANDROID
APP_ABI := armeabi-v7a

my.h文件

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
#include "opencv2/opencv.hpp"
/* Header for class com_lunaticcoding_colosseum_OpenCv */
#ifndef _Included_com_lunaticcoding_colosseum_OpenCv
#define _Included_com_lunaticcoding_colosseum_OpenCv
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class:     com_lunaticcoding_colosseum_OpenCv
* Method:    faceDetection
* Signature: (J)V
*/
void detect(Mat& frame);
JNIEXPORT void JNICALL Java_com_lunaticcoding_colosseum_OpenCv_faceDetection
(JNIEnv *, jclass, jlong);
#ifdef __cplusplus
}
#endif
#endif

我的.cpp文件

#include <jni.h>
#include "com_lunaticcoding_colosseum_OpenCv.h"
JNIEXPORT void JNICALL Java_com_lunaticcoding_colosseum_OpenCv_faceDetection
(JNIEnv *, jclass, jlong addrRgba){
//Mat& frame = *(Mat *) addrRgba;
//detect(frame);
}
void detect(Mat& frame) {
}

我在属性文件中添加了android.useDepricatedNdk=true,我的"错误消息"看起来像:

EDIT(删除了错误消息,因为它过时了,使问题更难阅读)(Reg.通过Android Studio上的CMake将OpenCV添加到Native C代码中)我觉得我真的很接近:O,但不知道我现在缺少了什么

#include <jni.h>
#include <string>
#include <opencv>
extern "C" JNIEXPORT jstring
JNICALL
Java_com_lunaticcoding_opencvtest_MainActivity_getFace(
JNIEnv *env,
jobject /* this */) {
std::string hello = "Hello from test";
return env->NewStringUTF(hello.c_str());
}

跟随错误

生成命令失败。使用参数{--build/Users/neutrocoding/Android/sdk/cmake/3.6.4111459/bin/cake执行进程/Users/sneutrocoding/AndroidStudioProjects/OpenCvTest2/app/.externalNativeBuild/cmake/debug/x86_64--target OpenCvFace}时出错[1/2]构建CXX对象CMakeFiles/OpenCvFace.dir/src/main/cpp/OpenCvFace.cpp.o失败:/Users/neutrocoding/Library/Android/sdk/ndk-bundle/toolchains/llvm/pre-builded/darwin-x86_64/bin/clang++--target=x86_64-none-linux-Android--gcc toolchain=/Users/Neutrocoding/Library/Android/sdk/ndk-bundle/toolchains/x86_64-4.9/puild/darwin-x86_64--sysroot=/Users/neutrocoding/Librare/Android/stk/ndk-boundle/sysroot-DOpenCvFace_EXPORTS-isystem/用户/疯子编码/文档/OpenCV android sdk/sdk/native/jni/include-isystem/Users/疯子编码/文件/OpenCV安卓系统sdk/sdk/native/jni/include/OpenCV-isystem/Users/疯子编码/Library/android/sdk/ndk-bundle/scxx stl/gnu libstdc++/4.9/include-isystem/Uusers/疯子编码/Librare/android/sdk/ndk-boundle/scxx-stl/gnu-libstdc++/4.9/libs/x86_64/include-isystem/用户/疯狂编码/Library/Android/sdk/ndk-bundle/sources/cx-stl/gnu-libsdc++/4.9/include/downward-isystem/Users/疯狂编码/Lebrary/Andriod/sdk/ndk-bundle/sysroot/usr/include/x86_64-linux-Android-D_Android_API__=21-g-DANDOID-ffunction-sections-funwind-tables-fstack-protector-strong-no-匿名-refixs-Wa,--noexecstack-Wformat-Werr=format security-frtti-fexceptions-O0-fno限制调试信息-fPIC-MD-MT CMakeFiles/OpenCvFace.dir/src/main/cpp/OpenCvFace.cpp.o-MF CMakeFiles-OpenCvFace.dir/src/main/cpp/OpenCvFace.cpp.o-d-o CMakeFiles/OpenCvFront.dir/sc/main/cpp/OpenCv Face.cpp-o-c/Users/maniccoding/AndroidStudioProjects/OpenCvTest2/app/src/man/cpp/OpenCvFace.cpp/Users/manicalcoding/AndroidStudioProjects/OpenCvTest2/app/src/main/cpp/OpenCvFace.cpp:3:10:致命错误:找不到"opencv"文件包括^~~~~~~~生成1个错误。ninja:生成已停止:子命令失败。

确保您拥有最新的Android Studio。按照NDK官方教程中的说明,删除android.useDepricatedNdk=true并使用externalNativeBuild。

我发现您需要OpenCv来构建和运行您的代码。请按照他们的指示,在你的Android.mk.中正确引用所有需要的标题和库

请记住,Android Studio忽略Application.mk中定义的APP_ABI。相反,您应该在build.gradle.中定义abiFilters

最新更新