Dyld:库未加载错误 Mac OS

5

好的,我知道我即将收到十几个"加载库虚拟器"的答案,但还是来试试吧...

junk.framework正在导出另一个项目(junk.app)的一些对象,以便我可以在集群上的remote.app节点上使用它。 我可以编译junk.framework(这意味着动态加载不再有意义),并将remote.app编译和链接到junk.framework。

然而,当我运行remote.app时,我会得到以下错误:

dyld: Library not loaded: @executable_path/../Frameworks/libtiff.dylib
  Referenced from: /Users/slate/Documents/junk/build/Development/junk.framework/Versions/A/junk
  Reason: image not found

我认为发生的情况是junk.framework从某个位置加载libtiff.dylib,但找不到它。 junk.framework是我正在开发的另一个项目,我最终已经成功构建了它。
当我在我的junk目标中获取libtiff.dylib的信息时,它给出了路径/Users/slate/Documents/osirix/osirix/Binaries/LibTiff/libtiff.dylib,并且我选择了absolute path。那么,为什么它没有在那里寻找呢?
额...为什么它要查找@executable_path/../???? 这个设置在哪里,我可以更改它吗?
编辑---
otool -L 给出了这个结果:
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 677.26.0)
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 949.54.0)
/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 12.0.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
@executable_path/../Frameworks/libtiff.dylib (compatibility version 11.0.0, current version 11.4.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
/System/Library/Frameworks/QTKit.framework/Versions/A/QTKit (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime (compatibility version 1.0.0, current version 1327.73.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0)
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 32.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 476.19.0)
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 34.0.0)
/System/Library/Frameworks/vecLib.framework/Versions/A/vecLib (compatibility version 1.0.0, current version 242.0.0)
1个回答

9
在构建libtiff.dylib时,指定了@executable_path设置。(如果您构建自己的dylib或框架,则为安装目录(INSTALL_PATH)构建设置。) 可以使用install_name_tool命令进行更改。

啊,原来是这样,所以我找不到它。谢谢。 - Stephen Furlani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接