Android 链接 lmediandk : multiple definition of PROPERTY_VENDOR

标签 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_VERSION 我得到了同样的错误, PROPERTY_DESCRIPTION , PROPERTY_ALGORITHMSPROPERTY_DEVICE_UNIQUE_ID .

谁知道这是怎么回事?

最佳答案

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

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

const char *PROPERTY_VENDOR = "vendor";

进入

#define PROPERTY_VENDOR "vendor"

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

关于Android 链接 lmediandk : multiple definition of PROPERTY_VENDOR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27174935/

相关文章:

C++ boost异步定时器与程序并行运行

android - 如何使用外部库在 android 上编译 ffmpeg

android - 从 urls 将图像存储在 Sqlite 中

android - 新Android项目的问题

java - NDK 应用程序签名检查

gcc - 如何知道ndk-build的gcc优化级别

android - pjsip android 眩晕超时

Android:如何在不使状态栏不可读的情况下删除 ActionBar

c++ - 找不到 MSVCP110D.dll

c++ - 在存在不可预测的类型别名的情况下如何处理显式模板实例化?