使用Android Studio和NDK构建原生openCV源

时间:2015-01-03 20:35:42

标签: android opencv android-ndk android-studio android-gradle

我想在我的Android应用程序中包含一些本机cpp源代码。我正在使用带有gradle构建系统的Android Studio 1.0。我有三个模块:我的Android应用程序,android opencv libs,cpp源代码(在jni文件夹中)

构建过程给出了以下错误:

    D:\NVPACK\android-ndk-r10c\sources\cxx-stl\gnu-libstdc++\4.9\include\bits\stl_pair.h
    Error:(96, 12) error: redefinition of 'struct std::pair<_T1, _T2>'
    Error:(214, 5) error: redefinition of 'template<class _T1, class _T2> bool std::operator==(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)'
    ... and some other redefinitions with some other errors in other files.

似乎包含路径部分错误或者NDK中存在重复的标题(stl_pair.h)这是我的build.gradle文件:

apply plugin: 'com.android.library'

android {
compileSdkVersion 21
buildToolsVersion "21.1.1"

defaultConfig {
    minSdkVersion 15
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"

    ndk{
        moduleName "Native"
        cFlags  "-I'D:\\OpenCV-2.4.10-android-sdk\\sdk\\native\\jni\\include' " +
                "-I'D:\\NVPACK\\android-ndk-r10c\\sources\\cxx-stl\\gnu-libstdc++\\4.9\\include' " +
                "-I'D:\\NVPACK\\android-ndk-r10c\\sources\\cxx-stl\\gnu-libstdc++\\4.9\\libs\\armeabi-v7a\\include'"
    }
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
}

在cFlags中,我指向openCV源和c here所描述的c ++标准源。这一切都很好,直到上述错误。

在处理cpp源时,我对整个构建过程只有非常基本的了解,因为我通常使用c#.net或android(没有本机源)。

根据我的理解,ndk-build应该给我一些我可以在我的应用程序中使用的.so文件。但是当地人的建设很糟糕。我在这个过程中遗漏了什么吗?

编辑:我切换到eclipse,可以构建并运行代码。也许我将来会尝试切换回android studio,但这并不是那么重要。

0 个答案:

没有答案