4

我有一个提供的 .dll,我需要使用 java 与它交互。

我是否必须重写 C 才能使用 jni.h 中提供的 JNI 类型?如 java sun 的 jni 示例所示。否则,我如何声明我的 java 函数的本机函数来传递和接收指针?

谢谢

4

3 回答 3

4

您可能会发现JNA很有用

“JNA 使 Java 程序可以轻松访问本机共享库(Windows 上的 DLL),而无需编写 Java 代码以外的任何内容 - 不需要 JNI 或本机代码。此功能可与 Windows 的 Platform/Invoke 和 Python 的 ctypes 相媲美。访问在运行时是动态的无需代码生成。”

于 2009-05-27T20:30:47.917 回答
3

在某种程度上,是的。

大多数时候,您只需要编写一个小的“包装器”dll,其中的函数可以进行类型转换并委托给“真实”DLL 中的相应函数。

于 2009-05-27T20:20:43.257 回答
2

您当然可以重写 C 代码,但为 C 代码编写包装器(技术上,使用FacadeBridge模式)并不少见。您在 Java 中编写符合您期望的代码,并让该代码调用您现有的 C 代码。

于 2009-05-27T20:25:40.640 回答