Использовать существующие файлы C ++ в Android Studio

Я хочу включить существующие файлы C ++ отсюда DetectText в моем коде Java в Android Studio.

Обычно (в 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.cppinclude $(BUILD_STATIC_LIBRARY)

Но теперь мне нужно реализовать обертку, и я немного растерялся. Я просто хочу вызвать метод main из части Java (которая вызывает другой метод и т. Д.)

Нужно ли менять все имена методов как-то так? Java_com_example_hellojni_HelloJni_stringFromJNI или только основной метод?

А как насчет аргументов?

2

Решение

В качестве чрезвычайно простого перевода вашего опыта работы с Linux вы можете встроить свой собственный код в исполняемый файл и запустить его из Java с помощью Runtime.exec ().

Вы получаете значительный прирост производительности, если используете внутрипроцессный модуль JNI. Может быть достаточно добавить только один собственный метод интерфейса и создать общую библиотеку, которая связывает вашу статическую библиотеку (и готовые библиотеки OpenCV).

0

Другие решения

Других решений пока нет …