3

バックグラウンド

私はMatlabコードベース(または現在r2012bを備えたアプリ)を持っており、それをユーザーに配布しています。

このアプリは、ネイティブライブラリ(いくつかの.dllファイル)でJNIを使​​用します。私のローカルマシンでは、 MathworksUndocumented Matlabで説明されているように、これにはlibrarypath.txtまたはjavalibrarypath.txt(r2012b)ファイルのエントリが必要です。

質問

プログラムでMatlabJavaクラスパスにネイティブライブラリを追加する方法はありますか?

initMyLibrary.mスクリプトを作成したいと思います。これにより、次のようになります。

  • ユーザーはこれらのファイルを手動で変更する必要はありません。
  • このコードは、コンパイルされたMCRアプリケーションとして使用できます。
  • initは、ユーザーの既存のjavalibrarypath.txtを破棄しません。
  • 管理者権限がないと想定します(Matlabベースのインストールを変更することはできません)。

何か案は?

4

1 に答える 1

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 がシステム パス上にある場合、これで問題ないと思いますか? アプリケーションの最後にパスを復元することを忘れないでください。

とにかく、これは少し危険かもしれません...

于 2012-12-18T14:42:21.510 に答える