我正在从用 Java 编写的程序中加载 C DLL。 我希望能够使用此声明从 DLL 调用其中一种方法:
dll_function(const char* foo1, const char* foo2, const char* foo3, void** bar, size_t* bar2);
如何在 Java 中使用正确类型的参数调用此方法?我知道(理论上)如何调用它,但我想知道的是如何传递“void** "和 "size_t*"来 self 的 Java 程序?基本上,我想知道 void 和 size_t*** 的“等效类型”是什么在 Java 中...
我找到了 Pointer 类但没能让它工作? 非常感谢:)
最佳答案
几年前我从事 Java/JNI/C 项目,我们必须在 Java 对象中维护不透明的 C 指针。我们在 Java 端使用 long
值来保存 C 指针,这些指针在 JNI 端从 jlong
转换为 void*
或任何指针我们需要的类型。
由于 Java long
类型是 64 位宽,而 JNI/C 指针通常是 32 位或 64 位宽,因此我们在它们之间进行转换没有任何问题。
关于java - 将 void** 指针转换为等效的 Java 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16018387/