我编写了一个关键依赖于 OpenCV 的程序。我已经从最新的稳定版本编译了 OpenCV,现在想分发这个程序,以确保人们不需要自己编译 OpenCV。程序本身是使用 g++ 编译的。
我尝试了很多方法来解决这个问题:
将 OpenCV 编译为静态库是可行的,但我无法将我的程序静态链接到这些库,因为 OS X 中的某些库无法静态链接;我在这里找到了这个信息:Mac OS 上的混合静态和动态链接
我试图转移到 XCode,在那里我将它用作命令行项目。我将搜索路径和安装位置设置为@rpath,并添加了一个构建阶段以将文件复制到可执行文件。我用 otool 验证了编译文件是否具有正确的链接,但它在干净的机器(没有 OpenCV 库的机器)上仍然失败,并出现“找不到库 @rpath/libopencv ...”错误。(是的,所有的 Mac 都使用 Lion,所以 @rpath 应该可以工作)。在这里找到了这个答案:Xcode 一直在错误的路径上搜索 dylib
我在编译文件和库上从 runnig otool -L 得到的结果是
@rpath/libopencv_core.2.4.dylib (compatibility version 2.4.0, current version 2.4.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
所以......我做错了什么?以及如何将这些库与我的程序一起分发?