2016-06-27 71 views
3

對不起,這可能是一個基本問題。 JNA直接映射和接口映射有什麼區別?JNA直接vs接口映射?

是我的理解是否正確:

  • 直接映射:直接使用庫對象(像Java靜態主)

  • 接口映射:創建intance的庫對象。

在此先感謝!

回答

4

直接映射直接將您的Java方法(用native修飾符聲明)綁定到試圖按原樣使用調用堆棧的本機代碼。如果限制函數參數並將值返回原始類型(直接映射最有效)(Pointer類型可能被認爲是原始類型)。

接口映射使用Proxy並將Java函數簽名動態地轉換爲通用本機入口點,並帶有一系列必須隨後被轉換爲本地原語的參數列表。它更加靈活w/r/t將Java類型轉換爲本地類型,但是由於參數的運行時轉換,速度會更慢。