1

这可能是一个非常菜鸟的问题,但我正在编写一个需要使用用 C++ 编写的 .so 库的 Android 应用程序。.so 由几个类组成,并且是通用 C++,而不是 JNI。

除了 JNI,有没有办法从 Android Java 应用程序调用 C++ 函数?我所看到的关于 JNI 的所有内容都表明您必须将本机代码重写为特定于 JNI 的代码,如果只给您一个 .so,那真的很不方便。

从 Android 4.0.3 中的 java 应用程序调用本机函数有哪些替代方法?编写一个调用 C++ 函数然后可以从 Java 调用的小型 JNI-C++ 程序有多简单?

Eclipse中有什么可以简化这个过程的吗?

我可能不应该对没有更优雅的解决方案感到惊讶。

4

2 回答 2

0

我认为没有比您建议的为库编写 JNI 包装器更优雅的解决方案了。无论如何,这可能不是一个好主意,因为您应该为要支持的每个架构编译所有本机代码的单独版本。仅仅附加到一个编译库就意味着你被它的架构束缚住了。

于 2012-04-16T01:26:26.313 回答
0

这不是特定于 Android 的,但您应该看看Java Native Access (JNA)。它允许您使用 libffi(不使用 JNI)访问本机代码。

于 2012-04-16T01:27:11.630 回答