这是一种难看的,但我坚持所以这里有云:highgui抱怨,它需要> = 17.0.0当我有20.0
我写一个动态库(以下简称“mylib.dylib '),它使用opencv(highgui和其他部分),最终由ffmpeg(libavfilter)加载。图书馆编译得很好。但是,当我尝试从ffmpeg的范围内,我收到以下错误dlopen的()的dylib:
mylib.dylib: dlopen(mylib.dylib, 2): Library not loaded: /usr/local/lib/libpng15.15.dylib
Referenced from: /usr/local/lib/libopencv_highgui.2.3.dylib
Reason: Incompatible library version: libopencv_highgui.2.3.dylib requires version 17.0.0 or later, but libpng15.15.dylib provides version 16.0.0
然而,当我运行otool -L /usr/local/lib/libpng15.15.dylib我得到以下内容:
/usr/local/lib/libpng15.15.dylib:
/usr/local/lib/libpng15.15.dylib (compatibility version 20.0.0, current version 20.0.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.0.0)
我上次检查时,20.0.0晚于17.0.0,这是highgui所说的要求。我认为这可能是一个架构问题(我在一台运行Lion的Mac上,所以我遇到了很多i386/x86_64的问题),但是在所有的库上运行'文件'显示, highgui,libpng的,MYLIB)是Mach-O的64位动态链接共享库x86_64的
我想也许还有的libpng躲在我的系统中的某个其他一些版本,但dlopen的错误专门指向到/ usr /本地/ lib/libpng15.15.dylib
显然我在这里失踪的东西 - 诚然,我不是这些动态库如何链接的专家。所以如果我忘记包含一些相关的信息,请原谅。
UPDATE 我忘了提 - 当我通过了XCode(无dlopen的错误),这使我相信,它可能有一些做的一个环境变量Xcode是设置运行的ffmpeg的lib工作正常我不是。
谢谢!
SOLUTION 1.不要哑 我用的是甲基苯丙胺,因为我是通过PHP脚本调用的ffmpeg,它是使用了自己的一套dylibs,这(惊喜惊喜)包括的libpng 16.0.0
我卸载使用make的libpng和OpenCV(也没有任何剩余的文件手动搜索),然后重新安装的libpng-1.5.4,然后OpenCV的-2.3 0.1。我检查了OpenCV的CMakeCache.txt并确保它指向libpng的全新版本。仍然出现错误,只是现在升级到20.0.0+,而之前只是想要17.0.0+! 那么也许在正确的轨道上?我不使用MacPorts或类似的东西,而且我最近在升级到Lion时做了干净的安装,所以如果我有另一个版本的libpng浮动,我不知道它会在哪里。 – jefftimesten