Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode dyld未加载原因:未找到图像libopencv_core.2.4.dylib_Xcode_Opencv_Dylib - Fatal编程技术网

Xcode dyld未加载原因:未找到图像libopencv_core.2.4.dylib

Xcode dyld未加载原因:未找到图像libopencv_core.2.4.dylib,xcode,opencv,dylib,Xcode,Opencv,Dylib,我对Objective C和Xcode还很陌生,但我刚刚完成了一个使用openCVlibopencv_core.2.4.2.dylib的小应用程序 当我在另一台机器上打开最终构建的应用程序时,OS X向我抛出了以下错误: Dyld Error Message: Library not loaded: */libopencv_core.2.4.dylib Referenced from: /Users/USER/Desktop/my app.app/Contents/MacOS/my ap

我对Objective C和Xcode还很陌生,但我刚刚完成了一个使用openCV
libopencv_core.2.4.2.dylib
的小应用程序

当我在另一台机器上打开最终构建的应用程序时,OS X向我抛出了以下错误:

Dyld Error Message:   Library not loaded: */libopencv_core.2.4.dylib  
Referenced from: /Users/USER/Desktop/my
app.app/Contents/MacOS/my app   
Reason: image not found
为什么我的应用程序在这里寻找的是2.4而不是2.4.2

我已经检查过的内容:

我添加了一个新的构建阶段->以便
libopencv_core.2.4.2.dylib
被复制到应用程序包中(通过Xcode中的“复制捆绑资源”)-
libopencv_core.2.4.2.dylib
现在位于我的
app.app/Resources

我错过了什么?我是否设置了更多的库搜索路径或类似路径

我也做了:

install_name_tool -id "@executable_path/../Frameworks/libopencv_core.2.4.2.dylib" libopencv_core.2.4.2.dylib
将动态库复制到Frameworks目录也不起作用:

Library not loaded: @executable_path/../Frameworks/libopencv_core.2.4.2.dylib
不知道现在该做什么-动态库在我的应用程序的Frameworks目录中

在二进制文件上使用
otool-L
可以得到:

/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 19.0.0)
    @loader_path/../Frameworks/libopencv_core.2.4.2.dylib (compatibility version 2.4.0, current version 2.4.2)
    @loader_path/../Frameworks/libopencv_highgui.2.4.2.dylib (compatibility version 2.4.0, current version 2.4.2)
    @loader_path/../Frameworks/libopencv_imgproc.2.4.2.dylib (compatibility version 2.4.0, current version 2.4.2)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 945.11.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
    /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 744.1.0)
    /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData (compatibility version 1.0.0, current version 407.7.0)
    /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1187.33.0)

我找到了一个更好的解决方案:在Xcode中重新编译openCV,并在构建设置中为编译的每个.dylib设置
@executable\u path/./Frameworks
,现在
.dylibs
本身总是“知道它们在哪里”。

我也遇到了同样的问题。我将all.dylib保存在系统根目录中usr/lib它工作正常。在运行时.o file not get.dylib file path会给出一个错误。

因为其他答案不够清楚

假设您的动态库文件位于
/usr/local/opt/opencv3/lib

sudo ln -s /usr/local/opt/opencv3/lib/*.dylib /usr/local/lib

这将解决这个问题。请注意,
/usr/lib
受MacOS系统的保护,因此您应该使用
/usr/local/lib

您是否检查(使用
otool-L
)您使用的
install\u name\u工具实际上更改了二进制文件中的引用?是的。我认为使用OpenCV作为私有框架来代替。我下载了一个-但它似乎无法为x86_64编译?只是想澄清一下,您是否正在二进制文件(而不是
.dylib
)上运行
安装名称工具
?我打开了.app包,并在.app中的.dylib上运行了它。我仍然不确定这是否是使用openCV发布应用程序的正确方法。二进制文件呢?在这方面尝试一下
otool-L
。我在用自制软件构建opencv时遇到了类似的问题,这似乎是一个非常麻烦的解决方案。你找到过更好的吗?@escapecharacter按照库纳尔的建议去做。为我工作。