Xcode 4.2链接错误:libz问题?

7
将项目迁移到Xcode 4.2时,我遇到了一些Mach-O链接器未解析错误,例如_crc32、_expf和_UnwindSjLj_Register等问题。这个项目在Xcode 4.0.3中编译和链接都很好。我怀疑这可能是一个libz问题,因为我的上一个项目链接了libz.1.2.3.dylib。我删除了该引用,并添加了libz.1.2.5.dylib,在/Platforms/iPhoneOS.platform/DeviceSupport/5.0(9A5259f)/Symbols 1/usr/lib文件夹中找到。无论我是否包括libz.1.2.5.dylib,我都得到了相同的39个未解析引用,所以这看起来非常可疑。
3个回答

30

连接到libz.dylib,但是通过Build Phases选项卡添加。

项目 >> 目标 >> Build Phases >> Link Binary With Libraries

在列表下按+,选择libz.dylib然后它会将库添加进去,以便在SDK更新之间正常工作。


谢谢,已经做到了,现在SDK中可以链接那个库了。谢谢。 - Andrew Smith
@epatel,与问题无关,但我在谷歌上找不到。我能在Snow Leopard中使用XCode 4.2吗,还是需要Lion?如果您回答,我将非常感激。非常感谢! - Özgür
1
@Comptrol 如果您登录developer.apple.com,您会发现有两个不同的下载选项,一个是Lion,另一个是Snow Leopard。 - epatel
这对我来说似乎不太安全。1.2.3和1.2.5之间的一般区别是什么?当您链接到libz.dylib而不是libz.1.2.3.dyliblibz.1.2.5.dylib时,究竟发生了什么? - Hyperbole
2
@Hyperbole 如果你查看一下,你会发现 SDK 中的 libz.dylib 实际上是一个文件链接,指向其中一个版本化的 dylibs(通常是最新的)。但只有一个头文件版本,它与最新版本相同。所以,如果你今天尝试链接到(在 Xcode 中)1.2.3 版本,并且 SDK 更新了,包括 libz 更新到 1.3.0 并带有更新的头文件,你仍然会链接到旧版本(但如果你使用 libz.dylib,你将会链接到与头文件相同的版本)......嗯,大概就是这样,但每个库都可以有自己的要求。 - epatel

0

我遇到了同样的问题。 在xcode 4.2中可以工作,但是在xcode 4.5中运行应用程序时,我遇到了这个问题。 libz.dylib(没有这个文件或目录)Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool 失败,退出代码为1。 我已经尝试使用libz1.2.5dylib,但没有用。


0

遇到了与这个库 - libz.1.2.3.dylib 相关的问题。按照建议,我添加了 libz.dylib,但仍然收到“ld: Library not found for -lz.1.2.3”的消息。删除引用后,构建成功。尝试将 libz.dylib 替换为 libz.1.2.5.dylib,仍然可以无错误地构建。XCode 4.3.2,Lion(OS X 10.7.4)。


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