Я использую ndk-build для создания набора общих библиотек (.so) для моего проекта Android. Я настроил и сделал исходный код библиотеки C++ (gdal-2.2.2). все было в порядке. ("/configure & make & make install" выполнено успешно).
Итак, я создал свою папку jni, как в этой документации.
но когда я пытаюсь использовать ndk-build в Windows, я получаю много ошибок, таких как «Неопределенная ссылка на что-то».
Я потратил много времени на этот проект. Есть ли кто-нибудь, кто может мне помочь? Спасибо.
Обновить
Я использовал такую конфигурацию в Ubuntu 16.04:
./configure --prefix=/home/mahdi/Desktop/build/ --with-spatialite=yes --with-spatialite-soname=libspatialite.so --host=i686-linux-android CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" LIBS="-lsupc++ -lstdc++"
После шага make & make install я создал JNI. это мой каталог.
jniwrap
jni
gdal
Android.mk
Application.mk
gdal_wrap.cpp
gdalconst_wrap.c
gnm_wrap.cpp
libgdal.a
ogr_wrap.cpp
osr_wrap.cpp
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := gdal
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/gdal/include
LOCAL_SRC_FILES := libgdal.a
LOCAL_EXPORT_LDLIBS := -lz
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := gdaljni
LOCAL_SRC_FILES := gdal_wrap.cpp
LOCAL_STATIC_LIBRARIES := gdal
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := gdalconstjni
LOCAL_SRC_FILES := gdalconst_wrap.c
LOCAL_STATIC_LIBRARIES := gdal
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := ogrjni
LOCAL_SRC_FILES := ogr_wrap.cpp
LOCAL_STATIC_LIBRARIES := gdal
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := osrjni
LOCAL_SRC_FILES := osr_wrap.cpp
LOCAL_STATIC_LIBRARIES := gdal
include $(BUILD_SHARED_LIBRARY)
Приложение.mk
APP_STL := gnustl_shared
APP_CFLAGS := Android.mk
APP_ABI := x86
APP_PLATFORM := android-14
Затем я использовал android-ndk-r16b в windows-x86_64, но столкнулся с такими ошибками, как на этой картинке:
Было много «ошибок неопределенной ссылки», которые я не могу здесь показать.
Примечание: для создания привязки Java gdal я использовал swig и jdk7 на своей Ubuntu 16.04.
./configure
— здесь очень легко ошибиться. - person Alex Cohn   schedule 03.05.2018ogrsqliteapiroutines.c
файла, вызвавшего неопределенные ссылки наsqlite3_bind_…
функции. Могло ли случиться так, что вы смешали разные версии? Почему бы вам не запустить шаг ndk на той же машине с Ubuntu? Переход на Windows — еще одна проблема в вашей настройке. Безопаснее скопировать полученные библиотеки JNI в Windows, если вы предпочитаете работать с Android Studio на этой платформе. - person Alex Cohn   schedule 04.05.2018