Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android上使用dlopen()的正确方法是什么?_Android_Android Ndk_Dlopen - Fatal编程技术网

在Android上使用dlopen()的正确方法是什么?

在Android上使用dlopen()的正确方法是什么?,android,android-ndk,dlopen,Android,Android Ndk,Dlopen,我的Android应用程序捆绑了一个共享对象。它位于APK的lib文件夹中。在Android 7上,我只需执行以下操作即可加载它: lib = dlopen("libfoo.so", RTLD_LAZY); 然而,这在Android 4上不起作用。在Android 4上,我必须执行以下操作: lib = dlopen("/data/data/<my_package_identifier>/lib/libfoo.so", RTLD_LAZY); lib=dlopen(“/data/

我的Android应用程序捆绑了一个共享对象。它位于APK的
lib
文件夹中。在Android 7上,我只需执行以下操作即可加载它:

lib = dlopen("libfoo.so", RTLD_LAZY);
然而,这在Android 4上不起作用。在Android 4上,我必须执行以下操作:

lib = dlopen("/data/data/<my_package_identifier>/lib/libfoo.so", RTLD_LAZY);
lib=dlopen(“/data/data//lib/libfoo.so”,RTLD_-LAZY);
那么,在Android上调用
dlopen()
时,我是否总是必须指定路径
/data/data//lib
?我有点担心硬编码路径,但正如我所说,仅仅传递共享对象的名称在Android 4上不起作用


我知道从Java方面使用
System.loadLibrary()
可能更容易,但我也不想使用它,因为它不允许我卸载库

实际上,尝试从
/data/data//lib
打开lib在Android 7上不起作用。所以我根本不知道如何让它工作,因为第一个版本在安卓4上不工作,第二个版本在安卓7上不工作。我如何使它在两个版本上都能工作?好的,那么我当然可以先尝试打开
libfoo.so
,但失败的是尝试
/data/data//lib/libfoo.so
,但当然这仍然感觉有点粗糙。。。