У меня уже есть статическая библиотека (main.a для архитектуры armv64-v8a), в которой в корневой папке main.cpp есть статическая функция, подобная следующей:
void main::global(void * _o, void * _i);
Мое требование состоит в том, чтобы создать оболочку в Android и вызвать эту функцию из приложения Android.
Я попытался сделать следующее:
- Создал папку jni.
- Создание папки jni / static / arm64-v8a.
- Перемещение main.o в вышеуказанную папку.
- Создание нового файла в папке jni с именем export.cpp и запись следующего кода вthis:
#include <jni.h>
#include <string.h>
#include <stdlib.h>
#include <main.h>
JNIEXPORT void JNICALL Java_com_example_test_sendData(JNIEnv *env, jobject obj, jbyteArray outData, jbyteArray inData)
{
}
- Создан файл Application.mk в папке jni со следующим содержимым
APP_ABI := arm64-v8a
APP_PLATFORM := android-23
- Создан файл Android.mkв папке jni со следующим содержимым:
LOCAL_PATH := $(call my-dir)
########################
# prepare static lib
include $(CLEAR_VARS)
LOCAL_MODULE := main
LOCAL_SRC_FILES := static/$(TARGET_ARCH_ABI)/main.a
include $(PREBUILT_STATIC_LIBRARY)
########################
########################
# prepare export
include $(CLEAR_VARS)
LOCAL_MODULE := export
LOCAL_SRC_FILES := export.cpp
LOCAL_STATIC_LIBRARIES := main
include $(BUILD_SHARED_LIBRARY)
########################
Теперь, если я запускаю команду ndk-build
, она выдаст ошибку, подобную следующей:
[arm64-v8a] Compile++ : export <= export.cpp
jni/export.cpp:4:10: fatal error: 'main.h' file not found
#include <main.h>
^~~~~~~~~
1 error generated.
make: *** [obj/local/arm64-v8a/objs/export/export.o] Error 1
Пожалуйста, помогите мнерешить эту проблему.
Попытка изменить #include <main.h>
на #include "main.h"
, но это не работаетрк и кинь ту же ошибку.