我正在尝试将此特定库集成到我的Android项目中,并且该库是用C / C ++编写的。我奇迹般地得到ndk-build
给我所需的.so
档案。
然而,看一下,项目中有一个示例,他们使用一个神秘的.jar
与.c
/ c++
文件的API绑定。
我如何
.jar
创建这个包含API的特殊.so
文件?OR
c++
文件,然后从Java调用它?我尝试使用JNI重新包装东西,但它似乎无法正常工作。我一直在UnsatisfiedLinkError
。
许多在线文档使用jni作为教程。我很高兴只有一些指向JNA教程的链接。
答案 0 :(得分:7)
JNA为各种平台提供了一个存根本机库libjnidispatch.so
。您可以自己构建此库,也可以从项目的lib/native/<platform>.jar
包中提取一个预先构建的二进制文件。
您在Android项目中包含libjnidispatch.so
的方式与任何其他JNI库一样。这是必需的;您不能像其他平台那样依赖JNA动态解压缩和使用其本机库。 JNA项目includes details for doing so(以及自己构建libjnidispatch.so
的说明)。
然后像使用任何其他Java jar文件一样使用jna.jar
,并编写自己的(Java)映射以匹配您尝试访问的本机库。还有一个jna-min.jar
,它省略了jna.jar
中通常捆绑的所有本机平台库。
答案 1 :(得分:0)
转到项目属性并构建路径并删除JNA 4.0及相关类。 这将有效!