应用程序在存档时会"Undefined symbols for architecture armv7",除非我不在库中剥离链接的产品



我的应用程序使用了四个库。其中两个是第三方(从源代码构建),还有两个是我自己的。该应用程序的构建、调试和发布构建工作没有任何问题。

然而,当我尝试存档应用程序时,我的一个个人库中的每个符号(仅两个库中的一个)都会得到"架构armv7的未定义符号"。

我发现,如果我在该库的构建设置中将"剥离链接产品"设置为"否",我就可以存档该应用程序。

我的问题是,为什么我只需要为四个图书馆中的一个这样做?我能做些什么来解决这个问题吗?

我使用的是Xcode 5.0.2。该应用程序和所有库都是以iOS 7为部署目标,并采用标准架构(armv7和armv7)构建的。

问题是我将该静态库的"链接时间优化"设置为YES。

我用了一张DTS票来弄清楚这一点,所以与其试图转述我得到的回应,我只想引用它:

"事实上,问题在于为库启用了链接时间优化生成设置。将Strip-Linked Product设置为YES,将Link Time Optimization设置为NO导致Xcode在链接过程中的优化过程之前首先剥离您的库(您可以通过查看构建日志来查看它);链接失败,因为所需的符号已从库中剥离。您正在获得一个成功的存档[当将Stripped Link Product设置为NO时],因为在链接的优化过程之前不会删除任何符号。将库的"链接时间优化"设置为"否"应该可以解决此问题。"--Linda Ouandji

最新更新