Android — неопределенная ссылка на существующий метод

Я пытаюсь скомпилировать CyanogenMod 10.2 для моего устройства, но я получаю ошибку компиляции при компиляции framework / av:

target SharedLib: libmediaplayerservice (/home/vektor/CM102/out/target/product/s7300b  /obj/SHARED_LIBRARIES/libmediaplayerservice_intermediates/LINKED/libmediaplayerservice.so)
frameworks/av/media/libmediaplayerservice/AmlogicPlayer.cpp:891: error: undefined reference to 'ammodule_match_check(char const*, char const*)'

Этот метод объявлен в ammodule.h содержалась в /device/my/device/packages/LibPlayer/amavutils/include

И в AmlogicPlayer.cpp это включено:

#include "ammodule.h"

В Android.mk файл кажется включенным:

AMPLAYER_APK_DIR=$(TOP)/device/my/device/packages/LibPlayer/
LOCAL_C_INCLUDES +=\
$(AMPLAYER_APK_DIR)/amavutils/include

Это подпись от ammodule.h

int ammodule_match_check(const char *allmodstr,const char *modname);

Кажется, все в порядке. Что может вызвать такие ошибки?

0

Решение

Функция подписи относится к

const char *

В то время как файл C ++ ищет функцию с

char const*

Это не одно и то же. Один является постоянным указателем на непостоянный символ, тогда как другой является непостоянным указателем на постоянный символ.
Google const char * против char const * для получения дополнительной информации.

1

Другие решения

Эта проблема не вызвана const char* а также char const * потому что они все одинаковые. const char * а также char * const это разные вещи. Дальше больше, если подпись не совпадает, будет жаловаться компилятор, а не компоновщик.

Я предлагаю вам проверить LD_LIBRARY_PATH и опцию -l в вашем Android.mk, чтобы увидеть, исчезла ли ошибка.

0

По вопросам рекламы [email protected]