/ / Matlab agrega bibliotecas nativas a la ruta mediante programación - matlab, matlab-implementación

Matlab agrega bibliotecas nativas a la ruta programáticamente - matlab, matlab-deploy

Fondo

Tengo una base de código de Matlab (o Aplicación ahora con r2012b), que distribuyo a los usuarios.

Esta aplicación utiliza JNI con bibliotecas nativas (varias .dll archivos). En mi máquina local, esto requiere entradas en un librarypath.txt o javalibrarypath.txt (r2012b), como se describe en Mathworks y Matlab sin documentar.

Pregunta

¿Hay alguna manera de agregar bibliotecas nativas a la ruta de clase de Java de Matlab mediante programación?

Me gustaria escribir un initMyLibrary.m guión, por el cual:

  • Los usuarios no tienen que modificar estos archivos manualmente.
  • El código se puede usar como una aplicación MCR compilada.
  • El init no "destruye los usuarios existentes javalibrarypath.txt.
  • Suponga que no tiene derechos de administrador (no puede "modificar la instalación base de Matlab").

¿Algunas ideas?

Respuestas

0 para la respuesta № 1

esto puede ser complicado y no soy un experto en el asunto, pero no funcionaría algo como esto en su 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

Porque creo que si tu dll está en la ruta del sistema, esto debería estar bien, ¿no? No olvide restaurar la ruta al final de la aplicación.

De todos modos, todo esto podría ser un poco peligroso ...