【问题标题】:MATLAB linking wrong OpenCV folder (OS X)MATLAB 链接错误的 OpenCV 文件夹(OS X)
【发布时间】:2014-10-24 23:07:05
【问题描述】:

我正在运行一些调用 OpenCV 的 MATLAB 代码 (OpenTLD),但似乎我有一些 dylib 的重复项,这让 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 dylib。

这是编译的相关部分:

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 工作。

【问题讨论】:

    标签: macos matlab opencv mex conflicting-libraries


    【解决方案1】:

    尝试在启动 MATLAB 之前设置 DYLD_INSERT_LIBRARIES 环境变量以强制它使用您的本地库而不是它自己的库。比如:

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

    在 MATLAB 内部和外部使用 ldd(或 OSX 等效的 otool)来查找哪些共享库是冲突的根源。比较这两者的输出:

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

    # in system shell
    $ ldd ./some_mex_file.mex*
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 2014-02-04
      • 2017-06-12
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      相关资源
      最近更新 更多