[英]Pass Java's Collections to C++ using JNA
在发布这个问题之前,我进行了彻底的研究。 我正在就 JNA 与 JNI 得出结论。 为此,我真的需要知道:
我们如何使用 JNA 将 Java 集合传递给 C++?
每当我试图找出这个问题的答案时,我总是用 JNI 得到结果。 请让我知道 JNA 是如何处理的。 是通过回调机制还是什么?
JNA 不能直接与 C++ 一起使用。 它在引擎盖下使用libffi
,它直接与本机 C 层接口。 要处理 C++ 代码,您需要extern "C"
位,您需要 JNA 与之交互。
使用类似 C 的接口,所有 Java 到本机数据都以字节形式传递。 在集合的情况下,它将作为 C 数组在连续内存中背靠背多个字节。
如果您可以控制 DLL/本机接口,则有两种选择:
在任何一种情况下,都没有直接从 Java 传递Collection
机制。 您必须对数组进行某种转换,无论是数据本身还是指向它的指针。
如果您无法控制 API,那么该 API 已经定义了您必须如何传递集合。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.