2

我想针对一些具有 C 接口的第三方库创建一个 Java 包装器。该库在一个复杂的上下文实体上运行,该实体本质上是一个 C++ 对象(C++ 在该库内部使用,但 API 是纯 C 语言)。将此实体包装到可从 Java 访问的类中是很自然的。为此,应将指向 Context 的指针存储在某处。

我看到两个选项可以做到这一点:

  • 在 Java 端声明一个新成员(例如,只要)并将其转换为 JNI 方法实现中的指针类型
  • 在 JNI 标头中声明一个新成员(如果 Java 依赖于 javah 为我生成的结构的大小,这可能是非法的)

所有关于 JNI 的教程都太简单了,无法提示我如何用 Java 类包装复杂的实体,感谢任何有关更详细文档的链接。

我还想知道在哪里调用上下文销毁函数(内部的 C++ 析构函数)我不想为此使用 Java finalize,因为 Java 不支持 finalize 方法,我怀疑有一种方法可以定义销毁过程在本地。

4

0 回答 0