我正在使用" pthread_condattr_setclock "在我的一个本机共享库中。构建很好,但是当我在Android应用程序中使用 System.loadLibrary 加载本机库时,应用程序终止抛出异常
失败:dlopen失败:找不到符号" pthread_condattr_setclock"由abcd.so引用
当我在Android 5.0中运行我的应用程序时,我没有得到这个例外,但在其他Android版本中。
有人对此有任何想法吗?
答案 0 :(得分:0)
Android在pthread_condattr
功能方面确实使用了非标准功能。即使我的NDK目录的pthread.h文件中存在标准声明,如果我使用API级别21之前的版本,Android也会抱怨它们没有被定义。
在Android 5.0之前,可以使用其他非标准功能等待使用单调时钟,例如(pthread_cond_timedwait_monotonic_np
),但它们已在Android 5.0中删除。我不知道为什么这些函数在声明时不起作用而且(AFAIK)没有得到正式支持,但看起来pthread_condattr
系列的非标准方法需要使用Android版本5.0之前。
请参阅示例here。