2011-04-12 79 views
0

我有一個非常惱人的編譯問題。JNI system.loadlibrary問題 - 使用C庫的本地C++ dll

我想在VS2010中的C++ DLL上做一個System.loadlibrary,它依次使用在VS2008中編譯的C DLL。

我得到的錯誤是: java.lang.UnsatisfiedLinkError中:應用程序未能啓動,因爲其 邊對邊配置不正確

每當我的C++ DLL試圖做一個電話,就會出現此到C DLL中的函數。兩者都編譯得很好,並且都位於Java Applet可訪問的文件夾中。

難道這有可能以某種方式解決?你需要更多信息嗎?

+0

是DLL的編譯和調試模式(/ MDD)掛鉤?你是否在你編譯的機器上運行它們? Microsoft不允許分發其調試庫,並且您不能在未安裝VS Studios的機器上運行調試版本。 – 2011-04-12 14:14:34

回答

2

您應該嘗試在DLL上使用dependency walker。 從並排錯誤,我假設c運行時重寫包或其中一個noredist包缺少。 但是,步行者應該告訴你這一點。
如果這沒有幫助,您可以從Windows的事件日誌中獲得更多信息,因爲並排錯誤記錄在那裏,或者您需要使用sxstrace獲取更多信息。

+0

依賴walker說:MSVCR90D.DLL和IESHIMS.DLL無法打開。那是哪個運行時間? – KaiserJohaan 2011-04-12 13:45:58

+0

這是VS2008的調試運行時。所以你需要安裝noredist軟件包。它應該是Visual Studio 2008的一部分,但我沒有手頭的路徑。必須是像VC/redist/DebugNoRedist等等。 – mkaes 2011-04-12 13:56:05