Проблемы при подключении .so в Android Studio

Ну, ситуация у меня следующая:

Я работаю со специальным устройством Android, к которому прикреплены некоторые дополнительные функции. Мое приложение работает в Android ndk, и теперь я хочу вызвать некоторые функции, предоставляемые производителями.

Эти функции входят в два разных файла .so, теперь mylib1 и mylib2. Кроме того, я получил заголовки от производителей, чтобы полностью реализовать их в ndk.

Проблема в том, что ни один из них не работает. Я пытаюсь связать их с моей native-lib (основной библиотекой), но я получаю два вида ошибок для одного и того же способа связывания (я думаю, что эта часть довольно странная)

Для mylib1 у меня возникает следующая ошибка, когда я пытаюсь скомпилировать код:

[armeabi] SharedLibrary: libnative-lib.so
C: /Users/JuanJo/Documents/JorgeVerdeguerGomez/Workspace/PCPA/app/src/main/jni/native-lib.cpp: 17: ошибка: неопределенная ссылка на Lib_Beep ()
clang ++. exe: error: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова)

В моем первом подходе я думал, что просто неправильно связывал его, несмотря на то, что следовал нескольким ответам, найденным на этой странице, и даже коду из самого руководства Google, но затем я попытался использовать некоторые функции в mylib2.

Странно то, что эта библиотека компилируется и предоставляет определения для методов в своем заголовке (не для другого заголовка, который уже пробовал), но когда я пытаюсь запустить приложение, она просто останавливает приложение при попытке выполнить :
System.loadLibrary ( «родной Пб»);

Если я прокомментирую эту строку, приложение не остановится (оно ничего не делает, потому что все находится в этой библиотеке, но, по крайней мере, показывает начальный экран)

Я также, кажется, не могу найти какой-либо журнал или файл, который говорит мне, почему он остановился.

После объяснения я покажу вам свой android.mk и надеюсь, что вы мне поможете:

LOCAL_PATH :=$(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := mylib1
LOCAL_SRC_FILES := libAndroid.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := mylib2
LOCAL_SRC_FILES := libAndroidEmvKernel.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := libnative-lib

LOCAL_SHARED_LIBRARIES= \
mylib1 \
mylib2

LOCAL_SRC_FILES := \
native-lib.cpp \
restOfCppFiles.cpp

LOCAL_LDLIBS := -llog \
-landroid
include $(BUILD_SHARED_LIBRARY)

Если честно, я думаю, что .so, так или иначе, неправильно скомпилированы или что-то в этом роде, потому что я думаю, что странно иметь две разные реакции на одну и ту же процедуру компоновки и один и тот же тип файлов.

Не стесняйтесь просить больше информации, если вы думаете, что она вам нужна.

1

Решение

Задача ещё не решена.

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

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