【问题标题】:Linking OpenCV static libraries in Xcode在 Xcode 中链接 OpenCV 静态库
【发布时间】:2012-06-23 05:08:08
【问题描述】:

(我在这里讨论的几乎所有内容都是新手......如果问题非常基本,请道歉) - 我使用 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”,引用自: __ZL7icvPutsP13CvFileStoragePKc in libopencv_core.a(persistence.o)

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

谢谢大家!

【问题讨论】:

    标签: xcode opencv build static-libraries


    【解决方案1】:

    您需要来自$OPENCV_BUILD_PATH/3rdparty/lib/.a 文件。

    您问题中的_gzputs 属于libzlib.a


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

    【讨论】:

    • 谢谢!这对我帮助很大。现在我只得到 25% 的错误。我想我仍然需要对 libopencv_highgui.a 做点什么:Undefined symbols for architecture i386: "_objc_msgSend", referenced from: _cvInitSystem in libopencv_highgui.a(window_cocoa.o) -[CVWindow cvMouseEvent:] in libopencv_highgui.a(window_cocoa.o) -[CVWindow rightMouseDragged:] in libopencv_highgui.a(window_cocoa.o)
    • @lino 我已经更新了答案。您需要链接 OpenCV 使用的所有框架/库,因为来自静态库的依赖项不会自动继承。
    猜你喜欢
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 2016-04-14
    • 2021-11-06
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多