JNA direct vs interface mapping?

时间:2016-06-27 22:02:04

标签: jna

对不起,这可能是个基本问题。 JNA直接映射和接口映射有什么区别?

我的解释是否正确:

  • 直接映射:直接使用库对象(如Java中的static main)

  • 界面映射:创建库对象的实例

提前致谢!

1 个答案:

答案 0 :(得分:4)

直接映射直接将您的Java方法(使用native修饰符声明)绑定到本机代码,该代码尝试按原样使用调用堆栈。如果限制函数参数并将值返回到基本类型,则直接映射最有效(Pointer类型可能被视为原始类型。)

接口映射使用Proxy并将Java函数签名动态转换为通用本机入口点,其中包含一个参数列表,这些参数列表随后必须转换为本机基元。它可以更灵活地将Java类型与本机进行转换,但由于参数的运行时转换,它可能会慢很多。