Java/JVM:使用其地址和签名调用本机C方法



假设我有一个C函数

int32_t add(int32_t a, int32_t b) { return a + b; }

位于我的 JVM 进程内存中的地址long funcAddr。有没有办法从 Java 代码调用它?

在python中,您可以从整数初始化CFUNCTYPE实例。我正在寻找完全相同的功能。

我找到了这个建议,但它似乎没有在 JVM 中实现。

我的用例是我使用 LLVM 生成一个函数,并希望在之后执行它。

按照评论中的建议,我使用 JNA 5.4.0 像这样调用函数

Function f = Function.getFunction(new Pointer(funcAddr), 0, "utf8");
long result = f.invoke(Long.class, long[]{1, 2});
// result == 3

最新更新