2016-01-18 65 views
0

有一個被我的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」)。有時它在某些時候會引發運行時異常。

爲什麼?

+3

如果沒有人知道你的代碼或者你傳遞了什麼論點,誰能夠提供幫助? – Codebender

+0

無法提供代碼。我提供了一些類似於我的代碼的演示代碼。只是想知道這個問題是在DLL上還是我的代碼在Thread中返回。或者這與資源釋放有關,因爲記事本在一個線程中打開。 –

回答

0

此問題與Memory Leak有關。 dll代碼中的一些變量沒有正確賦值,並且它們具有垃圾值。由於代碼間歇性失敗。

相關問題