Связывание сторонней статической библиотеки с другой статической библиотекой - PullRequest
1 голос
/ 08 марта 2011

Я пытаюсь создать статическую библиотеку, которая будет ссылаться на стороннюю статическую библиотеку.В настоящее время я получаю сообщение об ошибке:

Нет правила для создания цели `... / libqqrcLib.a ', необходимой для libqqrcAPI.a

Thisбыла решена путем обновления до более новой версии NDK, которая поддерживает работу со встроенными библиотеками (5b)

Вот Android.mk, который я использую:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := qqrcLib  
LOCAL_SRC_FILES := libqqrc.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/coreLib/include

include $(PREBUILT_STATIC_LIBRARY)


include $(CLEAR_VARS)

LOCAL_CPP_EXTENSION := cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/qqrc/ 
LOCAL_MODULE    := qqrcAPI
LOCAL_SRC_FILES := qqrcEngineImpl.cpp 
LOCAL_STATIC_LIBRARIES := qqrcLib

include $(BUILD_STATIC_LIBRARY)

В основномУ меня есть статическая библиотека qqrc.a, для которой я объявил модуль для нее "qqrcLib".
Я хочу иметь возможность связать ее со вторым модулем с именем "qqrcAPI" (на него ссылаются в qqrcEngineImpl.cpp)
Важно иметь его в формате этих двух библиотек, поскольку libqqrc.a скомпилирован с использованием другого подхода.

Также важно заявить, что я определил Application.mk, который выглядит следующим образом:

APP_MODULES      := qqrcAPI 
APP_PROJECT_PATH := $(call my-dir)./..

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

Текущая проблема для меня заключается в том, что, хотя у меня есть отдельный модуль для предварительно собранной библиотеки, и он, кажется, компилируется, я не могу произвестикомбинированная статическая библиотека, в которой будет храниться предварительно собранная библиотека.
У меня в каталоге obj \ local \ armeabi есть готовая библиотека (qqrcLib.a) и новая сформированная статическая библиотека (qqrcAPI.a), но, похоже, онане был связан, потому что новый модуль слишком мал ...

Что я делаю не так?

помогите?:)

1 Ответ

0 голосов
/ 04 июня 2011

Я не думаю, что вы можете использовать статические библиотеки и JNI. Библиотека верхнего уровня, которую вы собираетесь использовать в качестве своего JNI, должна быть общей.

Насколько я понимаю, когда вы добавляете статическую библиотеку в другую статическую библиотеку, второй файл .a библиотеки не включает в себя всю первую библиотеку, т.е. вам все равно нужно связать оба файла .a сделать .so (или другой фактический исполняемый файл).

Должно быть, вы пытаетесь использовать эти библиотеки? Я думаю, что решение вашей проблемы зависит от следующего шага (вероятно, .so разделяемая библиотека).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...