我还有一个预建的共享对象文件(mylib.so)和API文件(mylib.h)。现在我必须在我的项目中包含这些文件。我想使用本机接口调用此库中的函数。
但是为库提供的头文件不是 JNI特定的头文件,它是常见的C头文件。我想使用dlopen
加载此库并使用dlsym
获取符号。所以我可以使用dlsym
返回的函数指针来调用这些函数。
我要求的内容
- > Android.mk 文件
- > dlopen( lib_path ,RTLD_LAZY);安装apk文件后 mylib.so 的路径
如果有人这样尝试并成功,请帮助我。
答案 0 :(得分:0)
从第二个问题开始,调用Java System.Load("my")
将 libmy.so 引入内存通常要容易得多,而不是使用dlopen()
。在您的JNI模块中,如果需要,您仍然可以使用dlsym()
,但如果您将 libmy.so 提供给中的链接器,通常会自动找到正确的导出函数Android.mk 强>
请阅读相关的NDK文件http://source-android.frandroid.com/ndk/docs/PREBUILTS.html:其解释非常好。