2012-12-13 24 views
3

背景Matlab的添加本機庫路徑編程

我有一個Matlab代碼庫(或應用現在r2012b),我發給用戶。

此應用程序使用JNI與本地庫(幾個.dll文件)。在我的本地機器上,這需要librarypath.txt文件中的條目javalibrarypath.txt(r2012b)文件,如MathworksUndocumented Matlab所述。

問題

有什麼辦法本機庫添加到Matlab的Java類路徑編程?

我想編寫一個initMyLibrary.m腳本,其中:

  • 用戶不必手動修改這些文件。
  • 該代碼可以用作編譯的MCR應用程序。
  • init不會銷燬用戶現有的javalibrarypath.txt
  • 假設沒有管理員權限(不能修改Matlab的基本安裝)。

任何想法?

回答

0

這可能是混亂和我不是在這個問題上的專家,但也不會像這樣工作在initMyLibrary.m

currentdir = pwd; % or any other directory you know the dll will be in 
if ispc 
    system(['setx path "%path%;' currentdir '"']); % only works from windows 7 onwards though, for xp or vista youll have to change the registry with reg 
elseif isunix 
    system(['export PATH=$PATH:' currentdir]); % dont know if this works without admin rights though... 
elseif ismac 
    % for mac I dont know how to do this without admin rights 
else 
    error('whatever') % error handling 
end 

因爲我覺得如果你的DLL是系統路徑應該沒問題?不要忘記在應用程序結束時恢復路徑。

無論如何,這可能會有點危險......

+0

關閉但仍有一些挑戰。 $ PATH變量在啓動期間被讀取,所以這意味着它第一次需要重新啓動。它還需要一個包裝器來檢查.dll是否已經在路徑中。我打算讓這個問題開放一段時間... – chriswynnyk

+0

哎呀抱歉,我編輯了我的問題,但沒有注意到您的評論。是的,我猜你的評論對我的答案的第一版是正確的,但是會用'reg'的'setx'改變註冊表讓這個工作? (對於windows而言...... Unix和Mac系統可能需要一些研究) –