我刚刚开始在Xcode中工作并试图让我的(C ++)命令行应用程序(Mac OS X目标)包含自己的OpenCV动态库,以便我可以部署到其他人的计算机上并且它'我们会正确找到它们(没有他们的计算机需要安装OpenCV)。但除了他们在我的电脑上的位置(/ opt / local / lib)之外,它并没有找到任何地方。
当可执行文件在另一个系统上运行时,它会抛出这样的错误:
dyld:未加载库:/opt/local/lib/libopencv_core.2.3.dylib 引自:/ Users / editc / Desktop / edge_display / edge_display原因: 图片未找到
(请注意,尽管libopencv_core.2.3.dylib与可执行文件包含在同一目录中,但这仍然存在。)
如何让它查看应用程序自己的目录?将“./”添加到库搜索路径似乎什么都不做。
有几个搜索表明它应该查看其应用程序包的Frameworks /目录,但由于某种原因它没有生成.app包,所以即使我更改了安装目录并添加了如下所述的文件复制步骤this thread,因为我没有应用包,所以我没有Frameworks目录。所以没有应用程序包,这种技术不起作用。 (我不确定我是否理解应用程序包在什么条件下生成。)
我的项目是here,供您参考。有人可以帮忙吗?我一般都在Xcode和Mac OS X开发中沾沾自喜,所以如果这个问题看起来很新,请提前道歉。
答案 0 :(得分:2)
这个东西一开始很难弄明白。
您不需要将框架复制到Frameworks目录中,因为您的项目是命令行应用程序。在制作Cocoa应用程序时,您只有一个应用程序包。即使在这种情况下,如果您要将应用程序分发给未安装OpenCV的用户,您只需要将框架复制到Frameworks目录中。
请注意,尽管libopencv_core.2.3.dylib是这样的 包含在与可执行文件相同的目录中。
不要将库文件复制到可执行文件的文件夹中。只需将其链接到/ opt / local / lib
中的文件即可我下载了你的项目并且能够让它运行。这就是我所做的(使用Xcode 4):
@executable_path/../Frameworks
安装目录设置OpenCV Frameworks
文件夹中删除所有内容Link Binary With Libraries
libopencv_core.dylib
(注意我没有选择带有版本号的文件) libopencv_highgui.dylib
和libopencv_imgproc.dylib
(这是您项目需要的唯一库)
我的系统与您的系统略有不同,因为我的OpenCV库安装在/ usr / local / lib中,但您已经在项目的标题搜索路径中有/ opt / local / include,所以你应该没问题
在the OpenCV Wiki上的OS X命令行项目中有一些使用OpenCV库的说明,但它们是为Xcode 3编写的。我将尝试为Xcode添加一些更新的指令4。
答案 1 :(得分:0)
在项目设置中,您可以使用@executable_path来到达正确的位置。希望有所帮助。
您也可以尝试自己从代码中加载库..