【问题标题】:Use existing C++ files in Android Studio在 Android Studio 中使用现有的 C++ 文件
【发布时间】:2016-01-03 22:41:59
【问题描述】:

我想在我的 Android Studio 中的 Java 代码中包含来自 DetectText 的现有 c++ 文件。

通常(在 Linux 中),我通过命令运行它 ./TextDetection input_file output_file dark_on_light.

我已经用 NDK 编译它以获得一个 SWT.a 文件:

LOCAL_PATH := $(call my-dir)

# static library info
include $(CLEAR_VARS)
LOCAL_MODULE := opencv_core
LOCAL_SRC_FILES := opencv/lib/libopencv_core.a
include $(PREBUILT_STATIC_LIBRARY)

# static library info
include $(CLEAR_VARS)
LOCAL_MODULE := opencv_opencv_highgui
LOCAL_SRC_FILES := opencv/lib/libopencv_highgui.a
include $(PREBUILT_STATIC_LIBRARY)

# static library info
include $(CLEAR_VARS)
LOCAL_MODULE := opencv_imgproc
LOCAL_SRC_FILES := opencv/lib/libopencv_imgproc.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := SWT
LOCAL_C_INCLUDES := jni/opencv/include/
LOCAL_C_INCLUDES += jni/boost/include/boost-1_53
LOCAL_SRC_FILES := FeaturesMain.cpp \
 TextDetection.cpp



include $(BUILD_STATIC_LIBRARY)

但现在我需要实现包装器,我有点迷茫。我只想从 Java 部分调用 main 方法(调用另一个方法等)

我需要将所有方法名称更改为 Java_com_example_hellojni_HelloJni_stringFromJNI 之类的名称还是只更改主要方法?

那么参数呢?

【问题讨论】:

  • 您必须更具体地描述您的问题。 “它不起作用”可能意味着任何事情。

标签: android c++ android-studio java-native-interface android-sdk-tools


【解决方案1】:

作为对您的 Linux 体验的极其简单的翻译,您可以将您的本机代码构建为可执行文件,并使用 Runtime.exec() 从 Java 运行它。

如果您使用进程内 JNI 模块,您将获得显着的性能提升。只添加一个接口本地方法并构建一个链接静态库(和 OpenCV 预构建库)的共享库可能就足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-11
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多