Я пытаюсь скомпилировать 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);
Кажется, все в порядке. Что может вызвать такие ошибки?
Функция подписи относится к
const char *
В то время как файл C ++ ищет функцию с
char const*
Это не одно и то же. Один является постоянным указателем на непостоянный символ, тогда как другой является непостоянным указателем на постоянный символ.
Google const char * против char const * для получения дополнительной информации.
Эта проблема не вызвана const char*
а также char const *
потому что они все одинаковые. const char *
а также char * const
это разные вещи. Дальше больше, если подпись не совпадает, будет жаловаться компилятор, а не компоновщик.
Я предлагаю вам проверить LD_LIBRARY_PATH и опцию -l в вашем Android.mk, чтобы увидеть, исчезла ли ошибка.