MATLAB связывает неправильную папку OpenCV (OS X)

Я использую некоторый код MATLAB (OpenTLD), который вызывает OpenCV, однако, похоже, у меня есть дубликаты некоторых из dylibs, что сбивает с толку MATLAB.

__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]);

Моя текущая мысль - создать мягкую ссылку, но я думаю, что это испортит другие вещи OpenCV, которые я делаю вне MATLAB.

1 ответ

Попробуйте установить DYLD_INSERT_LIBRARIES переменная окружения перед запуском MATLAB, чтобы заставить ее использовать ваши локальные библиотеки вместо своих собственных. Что-то вроде:

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

использование ldd (или аналог OSX otool) как внутри, так и снаружи MATLAB, чтобы определить, какие общие библиотеки являются источником конфликта. Сравните вывод этих двух:

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

а также

# in system shell
$ ldd ./some_mex_file.mex*
Другие вопросы по тегам