Проблемы с подключением Android NDK - PullRequest
0 голосов
/ 21 декабря 2011

Я скомпилировал Sox et al с NDK.Итак, у меня есть все совместимые с Android совместимые библиотеки.

Я создал простой тестовый файл , который вызывает функцию sox.Сборка NDK говорит мне:

undefined reference to `sox_open_read'

sox_open_read определен в sox.h.Я знаю, что он находит sox.h, потому что он дает мне предупреждение об этом файле:

In file included from (...)/sox/sox.h:19

Так что, возможно, он захочет найти sox_open_read в реальном libsox.so.Ну, я попробовал около 100 различных способов сказать, где находится общая библиотека sox, например,

LOCAL_SHARED_LIBRARY := sox
LOCAL_LDLIBS    := -L$(LOCAL_PATH_FULL)/jni/libs/libsox.so

Однако, это будет работать, если я укажу Sox в качестве статической библиотеки:

#LOCAL_SHARED_LIBRARY := sox
LOCAL_STATIC_LIBRARIES := sox
LOCAL_LDLIBS    := -L$(LOCAL_PATH_FULL)/jni/libs/libsox.so

Насколько я понимаю, я не хочу статически ссылаться на sox lib - я хочу динамически ссылаться на него.

1 Ответ

1 голос
/ 23 декабря 2011

Вы должны определить libsox.so как готовую библиотеку.Создайте make-файл следующим образом и поместите ваш предварительно собранный libsox.so в тот же каталог с этим make-файлом.После этого вы можете использовать libsox так же, как вы его перестроили.Не забудьте включить этот make-файл в вашу сборку.

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := libsox
LOCAL_SRC_FILES := libsox.so

include $(PREBUILT_SHARED_LIBRARY)
...