1

我有一个依赖于两个静态库的 iPhone 应用程序

在执行Project > Build For Running然后Project > Run时没有错误,并且应用程序在我的 iPhone 上按预期运行。

在执行Project > Build For Archiving时,我收到其中一个库的链接错误,但另一个 ld 却没有: library not found for -lConcordeLib

当我查看创建的 *.a 文件的文件系统时,我看到:

发布-iphoneos/ConcordeLib.build/Objects-normal/armv6/libConcordeLib.a
发布-iphoneos/ConcordeLib.build/Objects-normal/armv7/libConcordeLib.a
发布-iphoneos/QSoptLib.build/Objects-normal/armv6/libQSoptLib。 a
Release-iphoneos/QSoptLib.build/Objects-normal/armv7/libQSoptLib.a
Release-iphoneos/libConcordeLib.a
Release-iphoneos/libQSoptLib.a

在 DerivedData 目录中进行编译。这看起来与成功执行Project > Build For Running时生成的文件完全相同,后者在 Debug-iphoneos 下生成相同的文件。

我清除了派生数据,停止并重新启动了 XCode,但仍然出现相同的错误。

4

1 回答 1

2

我仔细查看了 ld 命令,发现它在 .../Build/Intermediates/NavConcorde.build/AdHoc-iphoneos/ 下生成了文件。AdHoc 配置文件实际上已不存在,因此出现错误也就不足为奇了。我不知道为什么这会表现为链接错误。Debug 和 Release 下的库一定是从另一个编译中挂出来的。

转到产品 > 编辑方案并将配置文件设置为使用现有的分发配置文件解决了链接错误。

于 2011-05-18T15:55:57.000 回答