4

另一个dyld: Library not loadeddylib问题..

我有一个从 Boost 源编译的 dylib ( libboost_system.dylib
), 然后用于install-name-tool准备将其包含在我的应用程序包的 Frameworks 文件夹中,如下所示:

install_name_tool -id @executable_path
    /../Frameworks/
    libboost_system.dylib libboost_system.dylib

验证otool

$> otool -L libboost_system.dylib

/Users/TesterCodeSandbox/OgreSDK
    /BOOST_DYLIBS/libboost_system.dylib:
@executable_path/../Frameworks
    /libboost_system.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)

现在添加到 Xcode 项目,链接到应用程序并复制到 Frameworks 文件夹。
但是在检查构建的应用程序时,otool -L它仍然指的是原始(即“非重定位”)dylib:

OgreTest-ekeeqmnyciddaxbzyrehtcoijcki/Build
        /Products/Debug/OgreTest.app/Contents/MacOS/OgreTest:
    @executable_path/../Plugins
            /RenderSystem_GL.dylib (compatibility version 0.0.0, current version 1.8.0)
    /System/Library/Frameworks/Cocoa.framework/
            Versions/A/Cocoa (compatibility version 1.0.0, current version 15.0.0)
    @executable_path/../Frameworks/Ogre.framework/
            Versions/1.8.0/Ogre (compatibility version 0.0.0, current version 1.8.0)
    @executable_path/../Frameworks/Cg.framework
            /Cg (compatibility version 0.0.0, current version 0.0.0)
    /System/Library/Frameworks/IOKit.framework/Versions/A
            /IOKit (compatibility version 1.0.0, current version 275.0.0)
    /System/Library/Frameworks/Carbon.framework/Versions/A
            /Carbon (compatibility version 2.0.0, current version 152.0.0)
    libboost_system.dylib (compatibility version 0.0.0, current version 0.0.0)
    /usr/lib/libstdc++.6.dylib 
            (compatibility version 7.0.0, current version 7.9.0)
    /usr/lib/libSystem.B.dylib 
            (compatibility version 1.0.0, current version 125.2.11)
    /usr/lib/libobjc.A.dylib 
            (compatibility version 1.0.0, current version 227.0.0)
    /System/Library/Frameworks/CoreFoundation.framework
            /Versions/A/CoreFoundation 
            (compatibility version 150.0.0, current version 550.43.0)
    /System/Library/Frameworks/AppKit.framework
            /Versions/C/AppKit 
            (compatibility version 45.0.0, current version 1038.36.0)

并且应用程序无法以“ dyld: Library not loaded: libboost_system.dylib ”错误启动。有任何想法吗?


注1

现在,如果我还使用 对我的应用程序的二进制文件进行后处理,它确实可以工作,即:install_name_tool

install_name_tool -change libboost_system.dylib @executable_path/../Frameworks/libboost_system.dylib TestApp

我是否缺少一些 Xcode 选项来强制编译器在构建过程中自动更改我的应用程序中的 dylib 位置?

install_name_tool当然,手动调用使用dylib 的应用程序(即可能的许多应用程序之一)可能只是我在配置(应用程序)项目时搞砸的事情的一种解决方法......

4

0 回答 0