(我几乎所有我将在这里讨论的内容都是新的...如果问题非常基本,请道歉) - 我使用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(不完全相同的问题)。
谢谢大家!
答案 0 :(得分:2)
您需要.a
中的$OPENCV_BUILD_PATH/3rdparty/lib/
个文件。
您问题中的_gzputs
属于libzlib.a
要与OpenCV静态库链接,您还需要将所有OpenCV的依赖项添加到您的应用程序中。这些依赖项中的大多数来自opencv_highui模块,依赖项列表依赖于您的构建配置,因此我无法告诉您完整列表。但您可以自己找到它:使用任何文本编辑器从OpenCV构建目录中打开CMakeCache.txt
并搜索opencv_highgui_LIB_DEPENDS
行。除了单词general
之外,您需要该行中的所有项目。