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

0

Я пытаюсь скомпилировать CyanogenMod 10.2 для своего устройства, но при компиляции фреймворков /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);

Все выглядит нормально. Что может вызвать такие ошибки?

Теги:
cyanogenmod

2 ответа

1

Функция signiture относится к

const char *

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

char const*

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

0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню