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 находится на системном пути, это должно быть хорошо, нет? Не забудьте восстановить путь в конце приложения.

В любом случае все это может быть немного опасно...

Другие вопросы по тегам