gpt4 book ai didi

c++ - 尝试将动态库与 C++ Xcode 项目一起嵌入,但未正确引用它们

转载 作者:太空宇宙 更新时间:2023-11-03 22:35:05 24 4
gpt4 key购买 nike

我刚刚开始在 Xcode 中工作,并试图让我的 (C++) 命令行应用程序(Mac OS X 目标)包含它自己的 OpenCV 动态库,这样我就可以部署到其他人的计算机上,并且它'你会正确地找到它们(他们的计算机不需要安装 OpenCV)。但除了它们在我的计算机上的位置 (/opt/local/lib) 之外,它不会寻找任何地方。

当可执行文件在另一个系统上运行时,它会抛出如下错误:

dyld: Library not loaded: /opt/local/lib/libopencv_core.2.3.dylib Referenced from: /Users/editc/Desktop/edge_display/edge_display Reason: image not found

(请注意,尽管 libopencv_core.2.3.dylib 包含在与可执行文件相同的目录中。)

如何让它在应用程序自己的目录中查找?将“./”添加到库搜索路径似乎没有任何作用。

一些搜索表明它应该在其应用程序包的 Frameworks/目录中查找,但由于某种原因它没有生成 .app 包,所以即使我更改了安装目录并添加了文件复制步骤,如中所述this thread ,因为我没有应用程序包,所以我没有 Frameworks 目录。所以在没有应用程序包的情况下,这种技术是行不通的。 (我什至不确定我是否理解在什么条件下生成应用程序包。)

我的项目是here , 供你引用。谁能帮忙?总的来说,我仍在涉足 Xcode 和 Mac OS X 开发,所以如果这个问题看起来很新,请提前致歉。

最佳答案

这些东西一开始总是很难弄清楚。

您不需要将框架复制到 Frameworks 目录中,因为您的项目是一个命令行应用程序。当你制作一个 Cocoa 应用程序时,你只有一个应用程序包。即使在那种情况下,如果您要将应用程序分发给没有安装 OpenCV 的人,您只需要将框架复制到 Frameworks 目录中。

Note that this is despite the fact that libopencv_core.2.3.dylib is included in the same directory as the executable.

不要将库文件复制到可执行文件的文件夹中。让它链接到/opt/local/lib中的文件就可以了

我下载了您的项目并能够运行它。这是我所做的(使用 Xcode 4):

  1. 从 Edge Display 文件夹中删除 dylib 文件(和链接)
  2. 删除复制库文件的Copy Files构建阶段
  3. 删除 @executable_path/../Frameworks 安装目录设置
  4. 从 Xcode 项目的 OpenCV Frameworks 文件夹中删除所有内容
  5. 选择目标,选择构建阶段,展开Link Binary With Libraries
  6. 点击加号按钮,点击添加其他…,输入“/opt/local/lib”,选择libopencv_core.dylib(注意我没有选择带有版本号的文件)<
  7. libopencv_highgui.dyliblibopencv_imgproc.dylib 重复(这些是您的项目唯一需要的库)
  8. 将部署目标设置为 OS X 10.6,因为我正在使用它
  9. 点击运行并得到这个:

My beautiful edge-detected face

我的系统与您的系统略有不同,因为我的 OpenCV 库安装在/usr/local/lib 中,但是您已经在项目的标题搜索路径中有了/opt/local/include,所以您应该没问题。

the OpenCV Wiki 上有一些关于在 OS X 命令行项目中使用 OpenCV 库的说明。但它们是为 Xcode 3 编写的。我将尝试为 Xcode 4 添加一些更新的说明。

关于c++ - 尝试将动态库与 C++ Xcode 项目一起嵌入,但未正确引用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8462702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com