0

我正在尝试为我的设备编译 CyanogenMod 10.2,但在编译 frameworks/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);

一切似乎都很好。什么可能导致此类错误?

4

2 回答 2

1

函数签名是指

const char *

而 c++ 文件正在寻找一个函数

char const*

这些不是一回事。一个是指向非常量字符的常量指针,而另一个是指向常量字符的非常量指针。谷歌 const char* 与 char const* 了解更多信息。

于 2013-11-17T22:17:08.903 回答
0

这个问题不是由它们引起的const char*char const *因为它们都是一样的。const char *并且char * const是不同的东西。此外,如果签名不匹配,编译器而不是链接器会抱怨。

我建议您检查 Android.mk 中的 LD_LIBRARY_PATH 和 -l 选项,看看错误是否消失。

于 2013-11-18T06:40:50.423 回答