【问题标题】:how to rebuild android jni c++ files (inclueded opencv lib)如何重建 android jni c++ 文件(包括 opencv 库)
【发布时间】:2014-03-02 17:41:18
【问题描述】:

我有一个带有用于图像的 opencv 库的 android 应用程序 加工。另外,我的“jni”文件夹下有一个 cpp 文件。它 在我更改此 cpp 文件之前工作得很好。然后,变化是 没有反映在构建中。如何构建我的 cpp 文件?但是,我 尝试了以下方法;

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

  2. 转到我的项目->首选项-> 添加本地支持然后我单击完成按钮。

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

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

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

  6. C/C++ General->Preprocessor Include Paths..->我选中了CDT GCC Built in Compiler Settings复选框。

之后我运行我的应用程序,但我遇到了一些麻烦。在我的 cpp 文件中,未解决包含标签的问题。

例如。无法解析符号“cv”

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

【问题讨论】:

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


    【解决方案1】:

    以下设置适用于我:

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

    在我的情况下是:

    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; (因为我们在文件Android.mk 的第一步中使用名称"native_sample"

    整个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}/platforms/android-9/arch-arm/usr/include

    ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include

    ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include C:\DP\OpenCV-2.4.8-android-sdk\sdk\native\jni\include

    jni

    C:\DP\NDK\android-ndk-r9c\platforms\android-8\arch-arm\usr\include

    C:\DP\NDK\android-ndk-r9c\sources\cxx-stl\gnu-libstdc++\4.6\include\backward

    C:\DP\NDK\android-ndk-r9c\sources\android\native_app_glue

    C:\DP\NDK\android-ndk-r9c\platforms\android-19\arch-arm\usr\include

    C:\DP\NDK\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\lib\gcc\arm-linux-androideabi\4.6\include

    C:\DP\NDK\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\lib\gcc\arm-linux-androideabi\4.6\include-fixed

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


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

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


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      相关资源
      最近更新 更多