簡體   English   中英

Java JNI,dll 的多個版本:如何指定哪個 dll 用於本機調用(matlab jvm)

[英]Java JNI, multiple versions of a dll: How to specify which dll is being used for native calls (matlab jvm)

我面臨一個特殊的情況。 我正在嘗試在 matlab 中運行 java 應用程序。 我的應用程序使用外部 dll,它依賴於另一個 dll (xerces-c_3_2.dll)。 我的問題是 matlab 在其根文件夾中還包含一個 xerces-c_3_2.dll 。

不幸的是,這兩個 dll 文件是不同的,不可能以某種方式更改 matlab 內 jvm 的庫路徑。 dll 的“matlab”版本不會影響我的 dll 版本(它會在 matlab 啟動時自動加載),因此。 我的應用程序總是拋出無法找到程序的異常,因為它使用了錯誤的版本。

由於 matlab 不會從我的 dll 版本開始,我現在的想法是將 dll 重命名為“xerces-c_3_2_myVersion.dll”並冗余加載。

對於特定的 jni 調用,我如何告訴 jvm 應該使用哪個本機接口?

在我的 jni 接口中,定義了已知的public final static native行,但我從未遇到過如何指定 dll 以防冗余本機功能的問題?

有任何想法嗎? 謝謝! 斯文

我已經解決了我的問題:

  1. 我將 dll 文件的版本從“xerces-c_3_2.dll”重命名為“xerces-c_3_s.dll”
  2. 我在十六進制編輯器中修改了我編譯的個人 dll 並更改了依賴關系。 對 (1) 中的命名
  3. 我使用 matlab 中的 java 加載了修改后的 dll 和更改的依賴項。 現在它可以正常工作了!

所以從技術上講,它更像是一個 windows 庫的東西,而不是一個 java 問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM