0

我也有一个预构建的共享对象文件 (mylib.so) 和 API 文件 (mylib.h)。现在我必须在我的项目中包含这些文件。我想使用本机接口调用这个库中的函数。

但是为库提供的头文件不是JNI 特定的头文件,它是常见的 C 头文件。我想使用加载这个库dlopen并使用dlsym. 所以我可以使用返回的函数指针调用这些函数dlsym

我的要求

--> Android.mk文件

--> dlopen ( lib_path , RTLD_LAZY); 安装 apk 文件后mylib.so的路径

如果有人尝试过这样并成功了,请帮助我。

4

1 回答 1

0

System.Load("my")从第二个问题开始,调用 Java将libmy.so放入内存通常要容易得多,而不是使用dlopen(). 在您的 JNI 模块中,dlsym()如果需要,您仍然可以使用,但通常如果您将libmy.so提供给Android.mk中的链接器,它会自动找到正确的导出函数。

请阅读相关的 NDK 文档http://source-android.frandroid.com/ndk/docs/PREBUILTS.html:它的解释非常好。

于 2012-09-12T11:58:51.310 回答