在Xcode中链接OpenCV静态库

时间:2012-06-20 23:04:48

标签: xcode opencv build static-libraries

(我几乎所有我将在这里讨论的内容都是新的...如果问题非常基本,请道歉) - 我使用Xcode使用OpenCV(动态库)编写一些C ++代码。算法运行顺利,我创建了一个可行的可执行文件。但是,它只适用于我的电脑。

我知道我需要使用静态库而不是动态库。我做了一些研究,并在此处找到了如何执行此操作:http://www.shiffman.net/2011/01/23/how-to-build-opencv-static-libraries-mac-os-x/和此处:http://www.randomsequence.com/articles/opencv-snow-leopard/

我已经按照步骤进行了操作,虽然我必须进行一些更改,但我能够构建“.a”文件,例如“libopencv_highgui.a”。

但是,当我替换库时,我的代码不再起作用了。我得到200多个错误。这是其中之一:

  

架构x86_64的未定义符号:     “_gzputs”,引自:         libopencv_core.a中的__ZL7icvPutsP13CvFileStoragePKc(persistence.o)

我在这里搜索过这个问题,但这是我能找到的最接近的问题:Linking OpenCV libraries in Xcode(不完全相同的问题)。

谢谢大家!

1 个答案:

答案 0 :(得分:2)

您需要.a中的$OPENCV_BUILD_PATH/3rdparty/lib/个文件。

您问题中的_gzputs属于libzlib.a


要与OpenCV静态库链接,您还需要将所有OpenCV的依赖项添加到您的应用程序中。这些依赖项中的大多数来自opencv_highui模块,依赖项列表依赖于您的构建配置,因此我无法告诉您完整列表。但您可以自己找到它:使用任何文本编辑器从OpenCV构建目录中打开CMakeCache.txt并搜索opencv_highgui_LIB_DEPENDS行。除了单词general之外,您需要该行中的所有项目。