亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java使用jna調用

java使用jna調用

慕尼黑8549860 2018-07-21 17:19:06
現在有一個獲取機器碼的c++開發好的dll,java程序需要調用這個dll獲取到機器碼;1)、dll里面有個int getMacCode(char *p)這個函數;2)、讓p這個指針指向的地址空間保存了機器碼;3)、用java如何實現這個調用過程?ps:目前用jna來調用,但是一直報找不到函數的錯誤,“java.lang.UnsatisfiedLinkError: Error looking up function 'getMacCode':xxxx”;估計認為是參數傳遞上錯誤了,請大神賜教
查看完整描述

2 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

再看了下問題,貌似不是這個原因。可能需要你帖點代碼出來才曉得了
下面的東西先留著,等找到真正的原因了再來改吧


看樣子是 DLL 沒加載到,JNA 的文檔里有設置路徑的辦法

Make your target library available to your Java program. There are several ways to do this:

  • The preferred method is to set the jna.library.path system property to the path to your target library. This property is similar to java.library.path, but only applies to libraries loaded by JNA.

  • Change the appropriate library access environment variable before launching the VM. This is PATH on Windows, LD_LIBRARY_PATH on Linux, and DYLD_LIBRARY_PATH on OSX.

  • Make your native library available on your classpath, under the path {OS}-{ARCH}/{LIBRARY}, where {OS}-{ARCH} is JNA's canonical prefix for native libraries (e.g. win32-x86, linux-amd64, or darwin). If the resource is within a jar file it will be automatically extracted when loaded.

大概就是需要你把 DLL 所在目錄設置在系統的 PATH 路徑里,或者通過 java 的參數?jna.library.path?指定目錄,


java?-Djna.library.path=PATH_TO_YOUR_DLL?ClassName


查看完整回答
反對 回復 2018-07-24
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

參數應該是byte[]類型的

查看完整回答
反對 回復 2018-07-24
  • 2 回答
  • 0 關注
  • 1370 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號