17

我刚刚升级Xcode 4.5GM并整理了我的 iPhone 项目中的一些屏幕,以应对 iPhone 5 上额外的屏幕尺寸。该项目的目标是iOS 5.1,我刚来为我的手机构建它,我收到了这个链接器错误:

文件是通用的(2 个切片),但不包含一个(n)armv7s 切片:/Users/JonathanW/Documents/MyXcode/myApp/myApp/CorePlot/libCorePlot-CocoaTouch.a 用于架构 armv7s

Core Plot 1.0在我的项目中使用静态库,直到现在还没有任何问题。环顾四周,我可以看到与构建体系结构设置有关的类似错误,但不知道从哪里开始。该项目在模拟器中运行良好(iOS 5.1iOS 6)。有任何想法吗?

4

10 回答 10

15

从外观上看,您需要使用 Xcode 4.5GM 重建 libCorePlot 库,以便该库的 ARMV7S 构建。似乎它正在尝试使用您使用旧 Xcode 构建的版本。

于 2012-09-13T16:53:26.960 回答
7

我还在我的项目中使用 Core Plot 1.0 静态库。我能够通过将Build Active Architectures Only设置为Yes来解决这个问题。 Build Active Architectures Only位于 Xcode中 Target 的Build SettingsArchitecture部分。

我下载了似乎不完整的 Core Plot 1.0 zip 文件,因此我无法重建库。

于 2012-10-02T14:53:34.443 回答
4

它在模拟器中工作,因为模拟器将始终使用 i386 架构。新的 SDK 并没有改变这一点。改变的是 iPhone 5 的出现,它使用了新的架构 (armv7s)。您的应用程序的项目自动将 armv7s 添加为有效架构,但该库可能是在不知情的情况下编译的。因此,您启用 arm7s 的应用程序会尝试链接在没有 armv7s 的情况下构建的库并失败。

要修复它,您只需要访问生成库的项目即可。修改目标上的“有效架构”设置以包含 armv7s,然后重新构建。

于 2012-09-13T16:57:59.900 回答
2

我已经为此苦苦挣扎了好几天,终于通过创建一个新的静态库成功地让它工作了。

我通过此处的说明使用了 Mercurial 源代码控制系统:使用 Mecurial 创建静态库和此处找到的 wiki 中的“Core-Plot 静态库安装”:如何进行 Core-Plot 的静态库安装

我是为像我这样经验不足的人发布的,因为这很简单并且可以自我解释。

于 2012-09-30T16:20:58.483 回答
0

你做了清洁和重建吗?还要检查架构中是否有 armv6 和 armv7。您可能需要重新编译目标并将库重新添加到目标

于 2012-09-13T16:54:20.543 回答
0

将 CorePlot 项目上的编译器从 Apple LLVM Compiler 4.1 切换到 LLVM GCC 4.2

于 2012-09-21T12:15:05.383 回答
0

简单地我编译了 core-plot 库并从这个链接http://code.google.com/p/core-plot/wiki/UsingCorePlotInApplications
安装了依赖项目 ,每件事都像一个魅力(我的项目现在支持 armv7和 armv7s 没有任何问题),此外我仍然将 Build Active Architecture Only 设置为 NO ,以确保支持所有架构

于 2012-11-04T11:37:01.760 回答
0

您只需从有效架构列表中删除 armv7s。

只需执行以下操作。- 从项目导航器中选择您的项目 - 从目标列表中选择您的目标 - 选择构建设置选项卡 - 找到“有效架构”设置。它应该说 armv7 armv7s。删除 armv7s,您的有效架构中将只有 armv7。现在您的项目将正确编译。

于 2012-12-13T10:25:51.153 回答
0

修复使用 Xcode 5 时 Core Plot 的链接器错误

我多年来一直在使用 Core Plot,并且收到一堆关于 armv7s 不支持更新的“CorePlotHeader”文件夹中的某些文件的“Apple Mach-O Linker Warning”错误(删除了我项目中当前的文件夹并拖动了新的文件夹到我的项目中)以反映 CorePlot_1.4 的更改。我还删除了旧的“libCorePlot-CocoaTouch.a”库并将其放入我的 Frameworks 文件夹中。在模拟器中一切正常,但我无法在装有 iOS 7.0.2 的 iPad 4 上构建。

这是我发现在调试时唯一有效的东西(在存档等时似乎有效):

1)做我上面提到的一切,将Build Active Architectures设置为No,然后清理

2) 您可能会收到有关不支持架构“arm64”的错误,因此请从构建设置中的“有效架构”部分中删除“arm64”

3) 调试时右键单击 Products 文件夹中的“MyApp.app”文件,您可能会看到旧的“libCorePlot-CocoaTouch.a”(如果修改日期早于 2013 年 9 月 28 日)与您的应用程序一起编译。

4)删除该库并将新库复制到构建文件夹中,清理然后重建

这适用于“静态库安装”方法,尚未使用“依赖项目安装”方法进行测试

于 2013-10-22T17:29:56.377 回答
0

我在 Xcode 4.4 中为 iOS 6.1 使用 Core Plot 1.0 静态库。使用 iOS 7.0 更新到 Xcode 4.5 后,我遇到了与您相同的问题。

为了修复它,我删除了项目中的 CorePlotHeaders 文件夹和 libCorePlot-CocoaTouch.a。如果您在 Xcode 中删除它,请选择“移动到垃圾箱”选项。

然后我从https://code.google.com/p/core-plot/downloads/list下载 CorePlot_1.4.zip ,然后我从https://code.google.com/p/core-遵循静态库安装情节/维基/UsingCorePlotInApplications

希望能帮助到你

于 2013-10-23T04:48:48.603 回答