在过去的两天里,我做了很多研究,仅在这个网站上,我就必须阅读至少 20 个成功回答的问题。没有一个解决方案似乎对我有用。我在我的应用程序中使用了五个框架,并且在我的计算机上运行它没有问题。当我尝试在另一台计算机上运行应用程序时,加载库时出现错误。
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000
Application Specific Information:
dyld: launch, loading dependent libraries
Dyld Error Message:
Library not loaded: /Users/USER/*/Allegro-5.0.framework/Versions/5.0.7/Allegro-5.0
Referenced from: /Volumes/VOLUME/Pong.app/Contents/MacOS/../Frameworks/AllegroMain-5.0.framework/AllegroMain-5.0
Reason: image not found
我已经完成了这些步骤:
- 我有一个复制文件构建阶段,将框架复制到应用程序包中
- 我使用 install_name_tool 将安装路径更改为 @executable_path/../Frameworks
- 我已将 @executable_path/../Frameworks 设置为运行路径搜索路径
- 框架链接到我的程序
看起来 dyld 成功加载了第一个框架(Allegro-5.0),但在尝试加载第二个框架(AllegroMain-5.0)时认为它没有成功
附加信息:
- 当前运行 OSX 10.7.5
- Xcode 4.6 版
我的应用程序包的内容文件夹如下所示: Contents Screenshot
我的链接二进制文件与库和复制文件构建阶段: Xcode screenshot
我不确定我对错误原因的看法是正确的。我已经在 allegro.cc 寻求帮助,但基本上被告知他们无法帮助我解决特定于框架的问题。我真的很感激任何帮助解决这个问题!
编辑
我不确定这是否重要,但我想了更多,我的标题搜索路径可能有问题。为了让应用程序运行,我必须为每个框架创建一个新的标头搜索路径。我目前设置了这五个单独的标题搜索路径:
/Library/Frameworks/Allegro-5.0.framework/Versions/Current/Headers
/Library/Frameworks/AllegroMain-5.0.framework/Versions/Current/Headers
/Library/Frameworks/AllegroDialog-5.0.framework/Versions/Current/Headers
/Library/Frameworks/AllegroFont-5.0.framework/Versions/Current/Headers
/Library/Frameworks/AllegroTTF-5.0.framework/Versions/Current/Headers
我不确定运行路径搜索路径究竟是如何工作的;它会允许代码找到我的标题吗?错误消息似乎与此问题无关,但这是我想到的另一个想法。
更新 4/14
我所做的事情搞砸了,因为我什至在我的电脑上也开始出现奇怪的行为。我重新安装了框架,但出现了一个新错误。
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000
Application Specific Information:
dyld: launch, loading dependent libraries
Dyld Error Message:
Library not loaded: /opt/local/lib/libfreetype.6.dylib
Referenced from: /Volumes/VOLUME/Pong.app/Contents/MacOS/../Frameworks/AllegroTTF-5.0.framework/Versions/5.0.10/AllegroTTF-5.0
Reason: image not found
我的问题现在更笼统了:如果我将 libfreetype 与我的应用程序捆绑在一起,我如何告诉框架在哪里可以找到它?