繁体   English   中英

带有任意C代码的Java Native Interface

[英]Java Native Interface with any arbitrary C code

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

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

谢谢

您可能会发现JNA很有用

“JNA为Java程序提供了对本机共享库(Windows上的DLL)的轻松访问,而无需编写任何东西,只需要Java代码 - 不需要JNI或本机代码。此功能可与Windows的Platform / Invoke和Python的ctypes相媲美。访问在运行时是动态的没有代码生成。“

在某种程度上,是的。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM