2012-12-13 25 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系统可能需要一些研究) –