java - 将 void** 指针转换为等效的 Java 类型

标签 java pointers dll types

我正在从用 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/

相关文章:

java - Java 中通用对象的 HashCode

c - 了解 C 指针、数组和负索引

c - 动态地将结构数组扩展到更大的尺寸

c# - DLL 中有什么以及它是如何工作的?

java - 当术语数量增加时,Lucene 变得很慢?

java - 使用 fork/join 架构扩展时出现 StackOverflowError

c++ - 如何在 Windows 8 64 位操作系统中注册 .DLL 文件?

c++ - Excel VBA,无法从 DLL 文件中找到 DLL 入口点

java - 将字母(char)索引翻译为整数索引 POI Java

c - 设置孪生指针的最有效算法