Неопределенный символ при связывании статической библиотеки с Android NDK ⇐ Android
-
Гость
Неопределенный символ при связывании статической библиотеки с Android NDK
Я использую проект Gradle, предоставленный репозиторием SDL, для использования со сборками Android. Сам по себе проект прекрасно собирается с полным доступом к SDL. Но у меня есть статическая библиотека, которую я пытаюсь связать с этим проектом и которая отвечает за логику приложения.
Иерархия моих приложений выглядит следующим образом:
app/jni/src/arm64-v8a/libsdl-test-arm64-v8a.a приложение/jni/src/armeabi-v7a/libsdl-test-armeabi-v7a.a приложение/jni/src/x86/libsdl-test-x86.a приложение/jni/src/x86_64/libsdl-test-x86_64.a приложение/jni/src/Android.mk app/jni/src/main.c // вызывает appInit, определенный статической библиотекой app/jni/src/sdl-test.h // объявляет void appInit(); Как я уже узнал, для подключения статической библиотеки необходимо изменить файл Android.mk. Вот мой: https://pastebin.com/qhNCyc0c (библиотека написана на Zig, отсюда и запутанный комментарий)
При запуске на Android я получаю следующую ошибку:
ld: ошибка: неопределенный символ: appInit >>> на который ссылается main.c:5 (jni/src/main.c:5) >>> /Users/mak/dev/zig/sdl-test/android/android-template/app/build/intermediates/cxx/Debug/29445a3u/obj/local/arm64-v8a/objs-debug/main/main. о:(основной) Я могу подтвердить, что библиотека имеет правильную архитектуру, запустив file для объектного файла, использованного для ее создания:
libsdl-test-arm64-v8a.a.o: ELF, 64-битный LSB, перемещаемый, ARM aarch64, версия 1 (SYSV), с debug_info, не удаленный Что мне здесь не хватает?
Я использую проект Gradle, предоставленный репозиторием SDL, для использования со сборками Android. Сам по себе проект прекрасно собирается с полным доступом к SDL. Но у меня есть статическая библиотека, которую я пытаюсь связать с этим проектом и которая отвечает за логику приложения.
Иерархия моих приложений выглядит следующим образом:
app/jni/src/arm64-v8a/libsdl-test-arm64-v8a.a приложение/jni/src/armeabi-v7a/libsdl-test-armeabi-v7a.a приложение/jni/src/x86/libsdl-test-x86.a приложение/jni/src/x86_64/libsdl-test-x86_64.a приложение/jni/src/Android.mk app/jni/src/main.c // вызывает appInit, определенный статической библиотекой app/jni/src/sdl-test.h // объявляет void appInit(); Как я уже узнал, для подключения статической библиотеки необходимо изменить файл Android.mk. Вот мой: https://pastebin.com/qhNCyc0c (библиотека написана на Zig, отсюда и запутанный комментарий)
При запуске на Android я получаю следующую ошибку:
ld: ошибка: неопределенный символ: appInit >>> на который ссылается main.c:5 (jni/src/main.c:5) >>> /Users/mak/dev/zig/sdl-test/android/android-template/app/build/intermediates/cxx/Debug/29445a3u/obj/local/arm64-v8a/objs-debug/main/main. о:(основной) Я могу подтвердить, что библиотека имеет правильную архитектуру, запустив file для объектного файла, использованного для ее создания:
libsdl-test-arm64-v8a.a.o: ELF, 64-битный LSB, перемещаемый, ARM aarch64, версия 1 (SYSV), с debug_info, не удаленный Что мне здесь не хватает?
Мобильная версия