如何重建android jni c ++文件(包括opencv lib)

时间:2014-03-02 17:41:19

标签: c++ qt opencv android-ndk java-native-interface

  

我有一个带有opencv库的Android应用程序用于图像   处理。另外,我的' jni '文件夹下有一个cpp文件。它   在更改此cpp文件之前,我的工作非常顺利。然后,变化是   没有反映在构建中。我怎样才能构建我的cpp文件?但是,我   尝试了以下内容;

  1. Eclipse-> Window-> preferences-> Android-> NDK我浏览了ndk位置路径。

  2. 转到我的项目 - >偏好设置 - >添加NATIVE SUPPORT然后我点击完成按钮。

  3. 之后,我可以在项目首选项中看到C / C ++构建。

  4. 在C / C ++ build-> Chain Tool Editor选项卡下,我选择了G C编译器和G C ++编译器。

  5. C / C ++ General->路径和符号,我将 C:\ Users \ casper \ Desktop \ OpenCV-2.3.1 \ include 添加到路径和符号中。

  6. C / C ++ General->预处理器包含路径..->我检查了 CDT GCC内置编译器设置复选框。

  7. 之后我运行我的应用程序,但我有一些麻烦。在我的cpp文件中,取消包含include标记的内容。

    例如。符号'cv'无法解析

    我不知道我必须做什么重建cpp文件/ jni。或者我必须在不同平台上对代码进行一些更改,例如:visual c ++,QT。 我的最后一个问题是QT是Android NDK的替代品(用于处理jni,我的意思是如果我在QT上编写代码,那么QT可以为jni构建这些代码。)

1 个答案:

答案 0 :(得分:0)

以下设置适用于我:

  • 打开文件Android.mk(在文件夹jni中)并设置文件OpenCV.mk的路径(来自OpenCV for Android):

就我而言:

C:\DP\OpenCV-2.4.8-android-
sdk\sdk\native\jni\OpenCV.mk

整个Android.mk将如下所示:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

include C:\DP\OpenCV-2.4.8-android-sdk\sdk\native\jni\OpenCV.mk

LOCAL_MODULE    := native_sample
LOCAL_SRC_FILES := App_02_28.cpp
LOCAL_LDLIBS +=  -llog -ldl

include $(BUILD_SHARED_LIBRARY)

  • System.loadLibrary("native_sample");添加到方法

    课程onManagerConnected中的

    MainActivity.class; (因为我们在文件"native_sample"的第一步中使用了名称Android.mk

整个onManagerConnected将如下所示:

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            switch (status) {
                case LoaderCallbackInterface.SUCCESS:
                {
                    System.loadLibrary("native_sample");
                    Log.i(TAG, "OpenCV loaded successfully");
                    mOpenCvCameraView.enableView();
                } break;
                default:
                {
                    super.onManagerConnected(status);
                } break;
            }
        }
};

  • 右键点击项目,然后选择Android tools -> Add native support

  • 然后在卡片Properties -> C/C ++ General -> Paths and Symbols上设置Includes以下路径。就我而言,它是以下内容:

$ {NDKROOT} /平台/机器人-9 /弓形臂的/ usr /包括

$ {NDKROOT} /来源/ CXX-STL / GNU-的libstdc ++ / 4.6 /包括

$ {NDKROOT} /来源/ CXX-STL / GNU-的libstdc ++ / 4.6 /库/ armeabi-V7A /包括 C:\ DP \的OpenCV-2.4.8-Android的SDK \ SDK \天然\ JNI \包括

JNI

C:\ DP \ NDK \机器人-NDK-R9C \平台\机器人-8 \拱形臂的\ usr \包括

C:\ DP \ NDK \机器人-NDK-R9C \源\ CXX-STL \ GNU-的libstdc ++ \ 4.6 \包括\向后

C:\ DP \ NDK \机器人-NDK-R9C \源\机器人\ native_app_glue

C:\ DP \ NDK \机器人-NDK-R9C \平台\机器人-19 \拱形臂的\ usr \包括

C:\ DP \ NDK \机器人-NDK-R9C \工具链\臂-Linux的androideabi-4.6 \预建\ Windows \ lib中\ GCC \ ARM-Linux的androideabi \ 4.6 \包括

C:\ DP \ NDK \机器人-NDK-R9C \工具链\臂-Linux的androideabi-4.6 \预建\ Windows \ lib中\ GCC \ ARM-Linux的androideabi \ 4.6 \包括固定

当然,您必须将{NDK和OpenCV SDK存储在磁盘上的路径替换为C:\DP\NDK\


  • 添加到属性 - > C / C ++ Build - >环境以下变量:

Variables

... PATH的值与我设置系统PATH的值相对应。


  • 最后,右键单击您的项目并选择Index - Rebuild