我还不熟悉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
将dylib复制到Frameworks目录也不起作用:
Library not loaded: @executable_path/../Frameworks/libopencv_core.2.4.2.dylib
现在不知道该怎么做 - 我的应用程序的Frameworks目录中的dylib 是 ...
在二进制文件上使用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)
答案 0 :(得分:2)
我遇到了同样的问题。我将所有.dylib保存在系统根目录 usr / lib 中,它运行正常。在运行时.o文件没有得到.dylib文件路径然后它给出了一个错误。
答案 1 :(得分:1)
我找到了一个更好的解决方案:在Xcode中重新编译openCV并在构建设置中设置@executable_path/../Frameworks
,对于你编译的每个.dylib - 现在.dylibs
本身总是“知道它们在哪里”。 / p>
答案 2 :(得分:0)
由于其他答案不够明确;
假设您的dylib文件位于/usr/local/opt/opencv3/lib
sudo ln -s /usr/local/opt/opencv3/lib/*.dylib /usr/local/lib
会解决这个问题。请注意,/usr/lib
受MacOS系统保护,因此您应使用/usr/local/lib
。