繁体   English   中英

使用 JNA 将 Java 的集合传递给 C++

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM