Как вызвать функцию статической библиотеки из общей библиотеки? - PullRequest
1 голос
/ 09 мая 2019

У меня уже есть статическая библиотека (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", но это не работаетрк и кинь ту же ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...