Matlab программно добавляет собственные библиотеки в путь
Фон
У меня есть база кода Matlab (или приложение теперь с r2012b), которую я раздаю пользователям.
Это приложение использует JNI с собственными библиотеками (несколько файлов .dll). На моем локальном компьютере для этого требуются записи в файле librarypath.txt или javalibrarypath.txt (r2012b), как описано в Mathworks и недокументированном Matlab.
Вопрос
Есть ли способ программно добавить нативные библиотеки в путь к Java-классам Matlab?
Я хотел бы написать сценарий initMyLibrary.m, в соответствии с которым:
- Пользователи не должны изменять эти файлы вручную.
- Код можно использовать как скомпилированное приложение MCR.
- Init не разрушает существующий javalibrarypath.txt пользователей.
- Предположим, что у вас нет прав администратора (невозможно изменить базовую установку Matlab).
Есть идеи?
1 ответ
Это может быть грязно, и я не эксперт в этом вопросе, но не так, как эта работа в вашем 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 находится на системном пути, это должно быть хорошо, нет? Не забудьте восстановить путь в конце приложения.
В любом случае все это может быть немного опасно...