dylib:没有找到图片,但路径看起来正确

问题描述:

在一台计算机,当它无法加载MailCore框架的OS X的launchd守护程序崩溃。但是,该框架处于预期的位置,守护程序在我的计算机以及其他几个计算机上正常运行。有谁知道什么可能导致“图像未找到”错误?或者如何解决这个问题?dylib:没有找到图片,但路径看起来正确

的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

如果youre运行10.6.8不应该将它用于x86_64的建立? (这并不似乎是在目前:-)问题) – prodigitalson

+0

的应用程序依赖于不容易的x86_64的(例如,较旧的视频东西)建库,所以我们使用的i386作为唯一的架构。但不,我不认为这是问题。 –

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

注意,我不得不使用@rpath/,而不是@rpathRunpath Search Paths值(库在同一目录中可执行文件加载器),或者我否则将继续得到“库未找到”的错误。

您应该添加框架“二进制编程”不“链接的框架和库”(尽管它本身,当你将它添加到嵌入式二进制文件添加到链接的框架)。