10

私はまだObjectiveCとXcodeにまったく慣れていませんが、openCVを使用する小さなアプリを完成させましたlibopencv_core.2.4.2.dylib

最終的にビルドされたアプリを別のマシンで開くと、OSXから次のエラーが発生しました。

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ではなく2.4を探しているのはなぜですか?

私がすでにチェックしたこと:

新しいビルドフェーズを追加しました->それが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

今何をすべきかわからない-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)
4

3 に答える 3

2

私も同じ問題を抱えていました。システムルートディレクトリusr/lib内のすべての.dylibを正常に機能させます。実行時に.oファイルが.dylibファイルパスを取得しない場合、エラーが発生します。

于 2013-05-10T10:51:35.593 に答える
1

私はより良い解決策を見つけました:XcodeでopenCVを再コンパイル@executable_path/../Frameworksし、ビルド設定でを設定します。コンパイルするすべての.dylibに対して、.dylibs自分自身が常に「どこにあるかを知っている」ようになりました。

于 2012-12-27T17:41:29.750 に答える
0

他の答えは十分に明確ではないので;

dylibファイルがにあると仮定します/usr/local/opt/opencv3/lib

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

この問題を解決します。/usr/libMacOSのシステムによって保護されていることに注意してください。したがって、を使用する必要があります/usr/local/lib

于 2017-04-28T16:28:55.443 に答える