在一台计算机上,OS X launchd守护程序在加载MailCore框架失败时崩溃。但是,框架位于预期的位置,并且守护程序在我的计算机以及其他几个计算机上正常运行。有谁知道什么可能导致“图像未找到”错误?或者如何解决这个问题?
MailCore lib安装在:
/Library/Application Support/ArgusLink/bin/MailCore.framework/Versions/A/MailCore
尝试加载它的二进制文件安装在(并通过launchd运行):
/Library/Application Support/ArgusLink/bin/arguslinkd
MailCore的安装名称为:
@loader_path/MailCore.framework/Versions/A/MailCore
MailCore专为i386架构而构建。守护程序崩溃的计算机正在运行10.6.8,我已成功测试了它。
完整崩溃报告:
Process: arguslinkd [349]
Path: /Library/Application Support/ArgusLink/bin/arguslinkd
Identifier: arguslinkd
Version: ??? (???)
Code Type: X86 (Native)
Parent Process: launchd [1]
Date/Time: 2011-11-22 08:58:30.117 -0500
OS Version: Mac OS X 10.6.8 (10K549)
Report Version: 6
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000
Crashed Thread: 0
Dyld Error Message:
Library not loaded: @loader_path/MailCore.framework/Versions/A/MailCore
Referenced from: /Library/Application Support/ArgusLink/bin/arguslinkd
Reason: image not found
Binary Images:
0x8fe00000 - 0x8fe4162b dyld 132.1 (???) <A4F6ADCC-6448-37B4-ED6C-ABB2CD06F448>
/usr/lib/dyld
答案 0 :(得分:0)
根据Dave Dribin's Blog的建议,我转而使用@rpath
代替@loader_path
,但我有点模糊,为什么这可能解决了问题。
请注意,我必须使用@rpath/
而不是@rpath
来获取Runpath Search Paths
值(该库与加载程序可执行文件位于同一目录中),否则我将继续获取“库未找到”错误。
答案 1 :(得分:0)
您应该将框架添加到&#34;嵌入式二进制文件&#34;不要&#34;链接的框架和库&#34; (虽然当你将它添加到Embeded二进制文件时它会将自己添加到Linked框架中。)