OpenCL dlopen问题

问题描述 投票:0回答:2

我正在尝试在运行Android 7.0的三星上运行/system/vendor/lib/libOpenCL.so,我收到一个我之前没有遇到的错误:

E / linker:库“/system/vendor/lib/libOpenCL.so”(“/ system/vendor/lib/libOpenCL.so”)需要或由“/data/app/.../lib/arm64/libCLProcessor” .so“无法访问命名空间:[name =”classloader-namespace“,ld_library_paths =”“,default_library_paths =”...“])

它适用于另一个Android 7.0设备(Motorola G4),libOpenCL.so位于同一目录中。

任何人都知道它为什么在一台设备上工作而不在另一台设备上?

我正在使用https://github.com/krrishnarraj/libopencl-stub/blob/master/src/libopencl.c中的代码来实现/使用cl函数,而我的cl内核在实际打开open cl库的设备上运行得很好。

android opencl dlopen
2个回答
0
投票

问题似乎是Inforce构建问题,因为/libOpenCL.so没有填充到/system/etc/public.libraries.txt中。

通过编辑文件(添加了libOpenCL.so),我能够在Inforce开发板上解决同样的问题。


0
投票

Android限制私有库访问,App开发人员无法访问库。 Google Document

如果你是应用程序开发人员(我的意思是无法访问系统文件)。只有两个解决方案:

  1. 使用公共NDK API
  2. 包括它自己的那些库的副本。

在这种情况下,OpenCL,将库复制到您的应用程序,或使用其他API

© www.soinside.com 2019 - 2024. All rights reserved.