Android链接lmediandk:PROPERTY_VENDOR的多个定义

时间:2014-11-27 16:17:26

标签: android c++ android-ndk linker

我有一个类MyClass,它是静态库MyLibrary的一部分。 MyClass包括<media/NdkMediaDrm.h>

MyLibrary有一个Android.mk文件,用于构建静态库。在此我已经链接了媒体库:

LOCAL_LDLIBS := -lmediandk

但是在编译时我收到以下错误消息:

ld: error: ./obj/local/armeabi-v7a/libMyLibrary.a(MyClass.o): multiple definition of 'PROPERTY_VENDOR'
ld: ./obj/local/armeabi-v7a/libMyLibrary.a(MyLibrary.o): previous definition here

我对PROPERTY_VERSIONPROPERTY_DESCRIPTIONPROPERTY_ALGORITHMSPROPERTY_DEVICE_UNIQUE_ID收到同样的错误。

有谁知道什么是错的?

1 个答案:

答案 0 :(得分:1)

这似乎是NDK标头中的一个错误,更具体地说,是media/NdkMediaDrm.h标头中的错误。每次包含它时,它都会定义这些全局变量的新副本。

解决方法是不包含此特定标头,除非您确实需要它。如果您确实需要将其包含在多个文件中,则可以对其进行编辑并更改

const char *PROPERTY_VENDOR = "vendor";

#define PROPERTY_VENDOR "vendor"

(类似于所有其他字符串常量)。