我有一个类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_VERSION
,PROPERTY_DESCRIPTION
,PROPERTY_ALGORITHMS
和PROPERTY_DEVICE_UNIQUE_ID
收到同样的错误。
有谁知道什么是错的?
答案 0 :(得分:1)
这似乎是NDK标头中的一个错误,更具体地说,是media/NdkMediaDrm.h
标头中的错误。每次包含它时,它都会定义这些全局变量的新副本。
解决方法是不包含此特定标头,除非您确实需要它。如果您确实需要将其包含在多个文件中,则可以对其进行编辑并更改
const char *PROPERTY_VENDOR = "vendor";
到
#define PROPERTY_VENDOR "vendor"
(类似于所有其他字符串常量)。