-1

OpenCV を呼び出す MATLAB コード (OpenTLD) を実行していますが、MATLAB を混乱させる dylib の一部が重複しているようです。

__ZN2cv13AlgorithmInfo8addParamERNS_9AlgorithmEPKcRbbMS1_FivEMS1_FviERKNSt3__112basic_stringIcNSA_11char_traitsIcEENSA_9allocatorIcEEEE
  Referenced from: /usr/local/lib/libopencv_superres.2.4.dylib
  Expected in:
  /Applications/MATLAB_R2014a.app/bin/maci64/libopencv_core.2.4.dylib
 in /usr/local/lib/libopencv_superres.2.4.dylib

libopencv dylibs は、あるべきだと思われる場所に間違いなくあります。

これは、コンパイルの関連部分です。

include = ' -I/usr/local/include/opencv/ -I/usr/local/include/'; 
libpath = '/usr/local/lib/'; 

files = dir([libpath 'libopencv*.dylib']);

lib = [];
for i = 1:length(files),
    lib = [lib ' ' libpath files(i).name];
end

eval(['mex lk.cpp -O' include lib]);

私の現在の考えは、ソフト リンクを作成することですが、MATLAB 以外で行っている他の OpenCV の作業が台無しになると思います。

4

1 に答える 1

1

MATLABDYLD_INSERT_LIBRARIESを起動する前に環境変数を設定して、独自のライブラリではなくローカル ライブラリを強制的に使用するようにしてください。何かのようなもの:

DYLD_INSERT_LIBRARIES=/usr/local/lib/libopencv_2.4.dylib /Applications/MATLAB_R2014a.app/bin/matlab

MATLAB の内部と外部の両方でldd(または OSX に相当するもの)を使用して、競合の原因となっている共有ライブラリを見つけます。otoolこれら 2 つの出力を比較します。

% in MATLAB command window
>> !ldd ./some_mex_file.mex*

# in system shell
$ ldd ./some_mex_file.mex*
于 2014-10-25T19:27:14.753 に答える