2012-09-25 42 views
2

我必須在dll中調用方法,但其名稱類似於使用Java本機訪問的_setParameterX @ 12和_getParameterX @ 20。我如何正確使用FunctionMapper或StdCallFunctionMapper?我如何調用這些函數? jna文檔對我來說有點模糊。如何在JNA中調用具有前導下劃線和traling @的方法

+0

它看起來像你的Windows DLL中的C mangled函數名稱。 http://mearie.org/documents/mscmangle/。你可以直接在你的JNA映射中使用'setParameterX'和'getParameterX'。 –

回答

1

這些函數使用stdcall調用約定。後綴表示堆棧中傳入參數的大小。

您應該使用StdCallFunctionMapper自動生成適當的映射。創建類似於W32API options中使用的選項(函數映射器自動爲W32 API函數選擇-W或-A後綴)。將您的新選項地圖傳遞給您調用Native.loadLibrary

此外,請確保您實現了StdCallLibrary接口,以便在調用函數時使用適當的調用約定。

+0

確定感謝您的信息....我無法訪問我的電腦上的stackoverflow.com,所以我無法閱讀我的收件箱.... – user1565845

相關問題