自制软件+ opencv + libpng出错

时间:2015-01-24 10:07:27

标签: c++ macos opencv libpng

在Mac OS Maverick上我已经安装了带有brew install opencv的OpenCV。

我创建了一个简单的程序(从this tutorial复制)。编译工作正常但在运行可执行文件时出现以下错误:

dyld: Library not loaded: /usr/local/lib/libpng16.16.dylib
  Referenced from: /usr/local/lib/libopencv_highgui.2.4.dylib
  Reason: Incompatible library version: libopencv_highgui.2.4.dylib requires version 33.0.0 or later, but libpng16.16.dylib provides version 32.0.0
Trace/BPT trap: 5

我检查libpng已通过brew install libpng正确安装并运行brew upgrade以确保所有内容都是最新的。

运行locate libpng16.dylib会返回:

/Applications/GIMP.app/Contents/Resources/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.10/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.12/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.13/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.15/lib/libpng16.16.dylib
/usr/local/lib/libpng16.16.dylib

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

最好的解决方案是完全卸载libpng并重新安装它:

$ sudo brew uninstall libpng
$ sudo rm '/usr/local/bin/libpng-config'
$ for i in `brew link --overwrite --dry-run libpng`; do sudo rm $i; done
$ sudo brew install libpng

如果您需要安装opencv:

$ sudo brew tap homebrew/science
$ sudo brew install opencv

答案 1 :(得分:2)

Homebrew应确保安装正确的依赖项。但是,您可能在不同路径上安装了多个版本的libpng16。看看......

/usr/lib
/opt/local/lib

如果在这些位置找到任何版本的库,则可能导致在程序启动时加载错误的库。作为快速修复,您可以尝试在命令行上的程序名称前键入DYLD_LIBRARY_PATH=/usr/local/lib。从长远来看,您可能需要完全删除冲突的版本。

答案 2 :(得分:2)

这个答案适用于通过Conda安装的OSX用户,更具体地说是conda-forge频道(我不确定其他人)。

Conda最终在环境中安装自己的libpng,您可以使用conda upgrade libpng进行更新。

我猜这基本上是conda-forge上的opencv配方的错误。