另一个dyld: Library not loaded
dylib问题..
我有一个从 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 的应用程序(即可能的许多应用程序之一)可能只是我在配置(应用程序)项目时搞砸的事情的一种解决方法......