我如何使用 JNA 从 Android 调用 C/C++ 代码?
How do i call C/C++ code from Android using JNA?
我正在尝试将这个特定的库集成到我的 Android 项目中,该库是用 C/C++ 编写的。我奇迹般地 ndk-build
给我需要的 .so
文件。
然而,看看它,项目中有一个示例,他们使用神秘的 .jar
和 .c
/c++
文件的 API 绑定.
我怎么办
- 根据
.so
? 创建这个具有 API 的特殊 .jar
文件
或
- 直接在主
c++
文件中添加一个方法,然后从Java? 中调用它
我试过使用 JNI 重新包装东西,但它似乎绝对行不通。我不断收到 UnsatisfiedLinkError
.
网上很多文档都是用jni作为教程的。我对 JNA 教程的几个链接感到满意。
JNA 提供了一个存根本机库,libjnidispatch.so
用于各种平台。您可以自己构建此库,或从项目的 lib/native/<platform>.jar
包中提取预构建的二进制文件之一。
您将 libjnidispatch.so
包含在 Android 项目中,就像对待任何其他 JNI 库一样。这是必需的;您不能像在其他平台上那样依赖 JNA 自动动态解压和使用其本机库。 JNA 项目 includes details for doing so(以及自己构建 libjnidispatch.so
的说明)。
然后您可以像使用任何其他 Java jar 文件一样使用 jna.jar
,并编写您自己的 (Java) 映射以匹配您尝试访问的本机库。还有一个 jna-min.jar
省略了通常捆绑在 jna.jar
中的所有本机平台库。
请转到项目属性和构建路径并删除 JNA 4.0 和相关 类。
这会奏效!
我正在尝试将这个特定的库集成到我的 Android 项目中,该库是用 C/C++ 编写的。我奇迹般地 ndk-build
给我需要的 .so
文件。
然而,看看它,项目中有一个示例,他们使用神秘的 .jar
和 .c
/c++
文件的 API 绑定.
我怎么办
- 根据
.so
? 创建这个具有 API 的特殊
.jar
文件
或
- 直接在主
c++
文件中添加一个方法,然后从Java? 中调用它
我试过使用 JNI 重新包装东西,但它似乎绝对行不通。我不断收到 UnsatisfiedLinkError
.
网上很多文档都是用jni作为教程的。我对 JNA 教程的几个链接感到满意。
JNA 提供了一个存根本机库,libjnidispatch.so
用于各种平台。您可以自己构建此库,或从项目的 lib/native/<platform>.jar
包中提取预构建的二进制文件之一。
您将 libjnidispatch.so
包含在 Android 项目中,就像对待任何其他 JNI 库一样。这是必需的;您不能像在其他平台上那样依赖 JNA 自动动态解压和使用其本机库。 JNA 项目 includes details for doing so(以及自己构建 libjnidispatch.so
的说明)。
然后您可以像使用任何其他 Java jar 文件一样使用 jna.jar
,并编写您自己的 (Java) 映射以匹配您尝试访问的本机库。还有一个 jna-min.jar
省略了通常捆绑在 jna.jar
中的所有本机平台库。
请转到项目属性和构建路径并删除 JNA 4.0 和相关 类。 这会奏效!