dylib:找不到图像,但路径看起来正确

时间:2011-11-22 20:29:42

标签: macos dylib launchd

在一台计算机上,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

2 个答案:

答案 0 :(得分:0)

根据Dave Dribin's Blog的建议,我转而使用@rpath代替@loader_path,但我有点模糊,为什么这可能解决了问题。

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

答案 1 :(得分:0)

您应该将框架添加到&#34;嵌入式二进制文件&#34;不要&#34;链接的框架和库&#34; (虽然当你将它添加到Embeded二进制文件时它会将自己添加到Linked框架中。)