2012-08-13 57 views
0

我有一個依賴於第三方庫的JNI庫。通過JNI和DllMain加載多個依賴庫

我可以加載和使用該庫,首先在第三方庫上執行System.Load,然後在我的庫上執行System.Load。這工作。

我最近在我的圖書館推出的DllMain(什麼都不做),現在當庫被加載,我得到java.lang.UnsatisfiedLinkError: fullpath\name.dll: Can't find dependent libraries

如果我附上本機調試的過程,並在DllMain中設置一個斷點功能輸入了斷點並且庫已正確加載(不UnsatisfiedLinkError)

有沒有人有任何想法或指針可能會發生什麼?

+0

在調試器下而不是在生產代碼中運行的最常見原因是調試器在加載庫時使用的是不同於生產代碼的PATH – Petesh 2012-08-13 14:55:00

+0

我正在使用System.Load並指定完整路徑。在任何情況下,調試器(MSVC)都會在正在加載的進程和對System.Load的調用之間的某個時刻手動附加到進程,因此它不應該影響PATH(?)。使用調試器(eclipse調試模式)或不使用(eclipse運行模式)運行java應用程序對此行爲沒有任何影響。 – msam 2012-08-13 15:29:35

+0

DllMain會返回True嗎?依賴walker向你展示第三方庫的相關內容? – Petesh 2012-08-13 15:41:03

回答

0

我想,你沒有鏈接dll,你的DLL正在使用你的Java運行時。它必須在您的工作目錄中或使用-Djava.library.path = fullpath。