Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 456
#1

Подключить стороннюю NDK-библиотеку к своему NDK-проекту - Программирование Android

20.07.2017, 19:37. Просмотров 201. Ответов 1
Метки нет (Все метки)

Пытаюсь подключить к своему (на самом деле не совсем своему) NDK-проекту стороннюю библиотеку libpng (http://www.libpng.org). Содержимое библиотеки скопировал в ${ANDROID_NDK}/sources/libpng. Отредактировал CMakeLists.txt-файл основного проекта согласно официальной документации, получилось следующее:
cmake_minimum_required(VERSION 3.4.1)

# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.

# build native_app_glue as a static lib
add_library(native_app_glue STATIC
${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c)

set(CMAKE_SHARED_LINKER_FLAGS
"${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate")

add_library( # Sets the name of the library.
myblaster
# Sets the library as a sharend library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/MyLog.cpp
src/main/cpp/MyEventLoopClass.cpp
src/main/cpp/MyMain.cpp
src/main/cpp/MyDroidBlaster.cpp
src/main/cpp/MyGraphicsManagerClass.cpp
src/main/cpp/MyShip.cpp
src/main/cpp/MyTimeManagerClass.cpp
src/main/cpp/MyPhysicsManagerClass.cpp
src/main/cpp/MyAsteroidClass.cpp
src/main/cpp/MyResourceClass.cpp)

# Sets lib_src_DIR to the path of the target CMake project.
set( lib_src_DIR ${ANDROID_NDK}/sources/libpng )

# Sets lib_build_DIR to the path of the desired output directory.
set( lib_build_DIR ${ANDROID_NDK}/sources/libpng/outputs )
file(MAKE_DIRECTORY ${lib_build_DIR})

# Adds the CMakeLists.txt file located in the specified directory
# as a build dependency.
add_subdirectory( # Specifies the directory of the CMakeLists.txt file.
${lib_src_DIR}
# Specifies the directory for the build outputs.
${lib_build_DIR} )

# Adds the output of the additional CMake build as a prebuilt static
# library and names it lib_gmath.
add_library( lib_gmath STATIC IMPORTED )

set_target_properties( lib_gmath PROPERTIES IMPORTED_LOCATION
${lib_build_DIR}/${ANDROID_ABI}/lib_gmath.a )

include_directories( ${lib_src_DIR} )

find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the NDK library that
# you want CMake to locate.
log )

target_include_directories(myblaster PRIVATE
${ANDROID_NDK}/sources/android/native_app_glue)

# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.

target_link_libraries( # Specifies the target library.
myblaster
native_app_glue
android
EGL
GLESv2
lib_gmath
log
# Links the target library to the log library
# included in the NDK.
${log-lib} )
Синхронизация проекта происходит успешно, но при сборке получаю ошибку:
Error:error: 'C:/Users/User/AppData/Local/Android/sdk/ndk-bundle/sources/libpng/outputs/mips64/lib_gmath.a', needed by '../../../../build/intermediates/cmake/debug/obj/mips64/libmyblaster.so', missing and no known rule to make it
Понимаю, что что-то не так с путями. Подскажите, пожалуйста, с чем это связано? Может требуются еще как-либо корректировки в Gradle-файле?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2017, 19:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подключить стороннюю NDK-библиотеку к своему NDK-проекту (Программирование Android):

Подключить NDK - Программирование Android
(моя 101я попытка начать работать с NDK) Чуть сдвинулся, но не хватает теории... 1) Скачал последний NDK (android-ndk-r9c) 2)...

AS и Ndk - Программирование Android
Здравствуйте На официальном сайте в разделе ndk почему- то описывается eclipse Предполагается что с AS по аналогии и типа сами...

Android NDK - Программирование Android
Здравствуйте, форумчане. Появилось пара вопросов относительно Android NDK... С NDK можно программировать только вставками нативного...

Android NDK - Программирование Android
Здравствуйте. Хотелось бы написать пару программок на андроид, но джаву вообще не знаю. Нагуглил, что можно писать на С++, но толком как...

SDK or NDK - Программирование Android
я начинающий разработчик, на данный момент не много знаю с++. 1) Что лучше изучать SDK и яву или же NDK, в будущем хочу попробовать себя...

Использование NDK - Программирование Android
Пытаюсь освоить NDK... И как всегда не хватает ЗАДАНИЙ! Не могу придумать где можно использовать (для новичка в с++)... Писать еще один...

1
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 456
09.08.2017, 21:48  [ТС] #2
Как оказалось, CMakeLists.txt, который прилагается к скачиваемой библиотеке не подходит для простой вставки в CMakeLists.txt основного NDK-проекта.

Добавлено через 3 минуты
Смог подключить библиотеку "в лоб", прописав вручную все пути для необходимых cpp-файлов. А также подключив зависимые библиотеки (для libpng это zlib, например).
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2017, 21:48
Привет! Вот еще темы с ответами:

NDK и SDK - Программирование Android
есть класс на яве который использует массив, который с течением времени увеличивается ( то есть массив динамический) в массиве находятся...

NDK C vs C++ и примеры - Программирование Android
Гуру NDK! Посоветуйте! В очередной раз взялся за NDK и вдруг получилось... Успешно запустил все примеры что были под руками... ...

Сборка приложения, NDK - Программирование Android
По книжке Android NDK:Beginners Guide установил Apache ant, NDK, SDK, Java. Пытаюсь собрать. Делаю всё по книжке: 1) cd...

TCP клиент в NDK - Программирование Android
Как реализовать TCP клиент используя андроид ndk на С++?? Я слышал, что у андроид такое же ядро как и у Linux. То есть на андроид ndk будет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru