【发布时间】:2021-02-19 04:23:18
【问题描述】:
H3 library是基于C代码的
而且我需要在只允许 Java 运行时运行的平台上使用它。
是否可以将 C 代码编译为可在 JVM 上运行的 Java (jar)?还是在 JVM 中嵌入 C 运行时?
【问题讨论】:
H3 library是基于C代码的
而且我需要在只允许 Java 运行时运行的平台上使用它。
是否可以将 C 代码编译为可在 JVM 上运行的 Java (jar)?还是在 JVM 中嵌入 C 运行时?
【问题讨论】:
一般情况下,C 代码不能由 VM 执行。虽然有多种方法可以将 C 编译为 Java(1、2),但这可能不是最适合您的解决方案。
与原生代码交互的典型方式是JNI (Java Native Interface)
幸运的是,您不需要自己执行此操作。 H3 已经提供了现成的 Java 绑定:
https://github.com/uber/h3-java
您可以简单地将绑定用作 POM 中的依赖项,然后使用 Java 类与 H3 进行交互。
【讨论】:
您正在寻找的是Java Native Interface (JNI)。这允许您在本机代码(例如,用 C 编写)和 Java 代码之间创建绑定。
【讨论】: