有一個被我的java代碼調用的DLL函數。該函數在java中聲明爲native。說這個函數有3個參數。當我在兩個參數的java代碼中使用函數時,它工作正常。但是,當我用三個參數調用本地函數時,它會給出以下錯誤。從java代碼調用DLL中的本地函數。有時會拋出未被捕獲的運行時異常
運行時異常:未捕獲的運行時異常。
本地方法被覆蓋,這意味着它可以用任意數量的參數調用。所有參數都是字符串類型。 所以當這個方法被兩個參數調用時,它總是有效的。但是如果我們用三個參數來調用。它適用於前2-3次,然後拋出運行時異常。
所以我只是想知道這是與在DLL中實現的函數有關的問題還是它是我的Java代碼中的問題。我在Thread中調用了本地函數,並且這個本地函數使用了外部窗口資源。因爲它在某個時候有效,所以我認爲這個線程沒有正常工作。 請建議。
示例代碼:
Java代碼的本地函數聲明:
的System.loadLibrary( 「演示」)//演示是.dll文件包含的本地函數的實現。 fn_dmeo(string 1,string 2); fn_demo(string 1,string 2,string 3); //這個函數打開記事本
fn_demo的實現是用dll寫的。 所以我在Thread.run()中調用fn_demo(「」,「abc」,「xyz」) 有兩個參數,第一個空白它總是起作用。
如果我這樣做fn_demo(「pqr」,「abc」,「xyz」)。有時它在某些時候會引發運行時異常。
爲什麼?
如果沒有人知道你的代碼或者你傳遞了什麼論點,誰能夠提供幫助? – Codebender
無法提供代碼。我提供了一些類似於我的代碼的演示代碼。只是想知道這個問題是在DLL上還是我的代碼在Thread中返回。或者這與資源釋放有關,因爲記事本在一個線程中打開。 –