Где NDK ищет библиотеки?

Предположим, я хочу скомпилировать с NDK функцию C++, которая в своем теле вызывает функцию из библиотеки (например, STL и т. Д.). Как сообщить NDK, где находится мой компьютер, чтобы библиотека, чтобы при компиляции моей функции C++ NDK выполняла переход при вызове функции из библиотеки?

1 ответ

Решение

Вы должны указать свои библиотеки в вашем Android.mk файл.

Для стандартной библиотеки вам нужно только указать в Application.mk какой вы хотите использовать, то есть:

APP_STL=gnustl_shared

для стандартной библиотеки GCC.

Для других ваших библиотек, вы должны положить в Android.mk файл, какую библиотеку вы хотите использовать, и скажите ndk, чтобы построить их, если это необходимо.

Для уже созданной библиотеки положите

include $(CLEAR_VARS)

LOCAL_MODULE=<give a name to the lib you want to link>
LOCAL_EXPORT_C_INCLUDES=<path to your lib include directory>
LOCAL_SRC_FILE=<path to your library binary file>


include $(PREBUILT_SHARED_LIBRARY) #or STATIC if your lib is static

Для библиотеки, которая должна быть собрана, поместите

include $(CLEAR_VARS)

LOCAL_MODULE=<give a name to the lib you want to link>
LOCAL_SRC_FILE=<list all the files necessary to build your lib>
LOCAL_EXPORT_C_INCLUDES=<path to your lib include directory>

include $(BUILD_SHARED_LIBRARY) #or STATIC if you want to build it static

Затем, после этого, просто добавьте следующее

LOCAL_STATIC_LIBRARIES=<list your static libs **using their LOCAL_MODULE names**>

LOCAL_SHARED_LIBRARIES=<list your shared libs **using their LOCAL_MODULE names**>

и вуаля!

Другие вопросы по тегам