假设我有一个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