1

在一台计算机上,OS X launchd 守护程序在无法加载 MailCore 框架时崩溃。但是,该框架位于预期的位置,并且该守护程序在我的计算机以及其他几个计算机上正常运行。有谁知道可能导致“找不到图像”错误的原因?或者如何解决这个问题?

MailCore 库安装在:

/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
4

2 回答 2

0

按照Dave Dribin's Blog的建议,我改用 using@rpath而不是@loader_path,尽管我对为什么这可能解决了问题有点模糊。

请注意,我必须使用@rpath/而不是@rpathRunpath Search Paths(库与加载程序可执行文件位于同一目录中),否则我会继续收到“找不到库”错误。

于 2011-11-29T16:21:23.267 回答
0

您应该将框架添加到“嵌入的二进制文件”而不是“链接的框架和库”(尽管当您将其添加到嵌入的二进制文件时,它会将自己添加到链接的框架中)。

于 2015-04-18T12:18:40.530 回答