对不起,这可能是个基本问题。 JNA直接映射和接口映射有什么区别?
我的解释是否正确:
直接映射:直接使用库对象(如Java中的static main)
界面映射:创建库对象的实例。
提前致谢!
答案 0 :(得分:4)
直接映射直接将您的Java方法(使用native
修饰符声明)绑定到本机代码,该代码尝试按原样使用调用堆栈。如果限制函数参数并将值返回到基本类型,则直接映射最有效(Pointer
类型可能被视为原始类型。)
接口映射使用Proxy
并将Java函数签名动态转换为通用本机入口点,其中包含一个参数列表,这些参数列表随后必须转换为本机基元。它可以更灵活地将Java类型与本机进行转换,但由于参数的运行时转换,它可能会慢很多。