提问者:小点点

在Java和C++之间传递数据


我正在开发一个应用程序,其中我有一个Java的应用层,还有一个服务,不过是一个C++的插件。我需要从应用层调用本机代码API,这些API将通过AOSP框架开发的JNI层调用。

现在的问题是,我需要将一个数据块从应用层传递到本机层,这些数据块将通过JNI调用传递到本机层。

与其直接传递数据,我更愿意使用sharedMemory(或任何高效的方式)。有没有人可以建议我如何将数据从应用程序层传递到本机代码。

是否有任何方法可以在本机层分配内存,并从应用层访问该内存位置,以便将数据存储到该内存位置。

我不能使用用户实现的JNI层。


共1个答案

匿名用户

简短的回答是:没有。

较长的回答:您提到了AOSP,所以我假设您使用的是Android OS。

AOSP中的JNI实现非常特殊,您只能通过函数参数和原语返回值与它进行通信。

使用JNIEnv方法在本机代码中创建Java对象的新实例是可能的,但这是高度不鼓励的。

通常,通过JNI在Java和原生之间移动大量数据的整个过程是有问题的。

有关更多细节,请阅读本文:https://developer.android.com/training/articles/perf-jni

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(java|c++|之间|传递|数据)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?