Xcode dyld未加载原因:未找到图像libopencv_core.2.4.dylib
我对Objective C和Xcode还很陌生,但我刚刚完成了一个使用openCVXcode 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
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按照库纳尔的建议去做。为我工作。