樓主給一個dll添加兩個介面(c++),在eclipse中的java專案中動態呼叫,第一個可以呼叫,第二個無法呼叫。
報錯資訊:
嚴重: Servlet.service() for servlet [springMvc] in context with path [/dmcp] threw exception [Handler processing failed; nested exception is java.lang.Error: Invalid memory access] with root cause
java.lang.Error: Invalid memory access
樓主用c++撰寫了一個test專案,動態呼叫dll,兩個介面未出現問題。
樓主在java專案中除錯一直查看到呼叫介面處,引數傳遞無錯誤,樓主無法查看java專案中具體如何呼叫,只能跟進到呼叫處。
希望各位指點方向,讓我可以繼續追尋錯誤點。(板塊若選擇錯誤,希望提醒)
uj5u.com熱心網友回復:
追加錯誤提示資訊:org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.Error: Invalid memory accessuj5u.com熱心網友回復:
樓主用depends.exe查看dll檔案可以看到自己添加的倆個介面下面是java中的介面宣告:
int SetPIPSingleChannelReplace(String str, byte[] resStr, int bufflen); //可以正確使用
int SetPIPInfo(String str, byte[] resStr, int bufflen); //在java專案中不能使用
因為所用介面格式都是如此,樓主認為可以排除型別轉換問題。
樓主嘗試將匯出檔案中介面的順序,名字的更換,未奏效。
uj5u.com熱心網友回復:
從你的 錯誤提示可以猜測是字串的空間沒有申請吧uj5u.com熱心網友回復:
這個動態庫是C寫的么?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/61488.html
上一篇:Oracle大量資料讀取問題
