iOS – 升级到Xcode 4.5后的链接器错误,可能与Core Plot相关

我刚刚升级到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 )中运行良好。 有任何想法吗?

根据它的外观,你需要使用Xcode 4.5GM重建libCorePlot库,以便有一个ARMV7S版本的库。 似乎它正在尝试使用您使用旧版Xcode构建的版本。

我也在我的项目中使用Core Plot 1.0静态库。 通过将Build Active Architectures Only设置为Yes,我能够解决这个问题。 构建活动架构仅在Xcode中Target的Build SettingsArchitecture部分中。

我下载了Core Plot 1.0 zip文件,这个文件看起来不完整,所以我无法重建库。

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

要修复它,您只需要访问生成库的项目。 修改目标上的“有效体系结构”设置以包含armv7,然后重建。

我几天来一直在努力解决这个问题,最后通过创建一个新的静态库成功地完成了它。

我通过以下说明使用Mercurial源代码控制系统: 使用Mecurial创建一个静态库,并在此处找到wiki的“Core-Plot Static Library Install”: 如何进行Core-Plot的静态库安装

我正在为像我这样的人发帖,经验不足,因为这很简单并且自我解释。

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

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

只需编译核心图库并按照此链接http://DE.google.com/p/core-plot/wiki/UsingCorePlotInApplications进行 Dependent Project安装
并且每件事情都像魅力(我的项目现在支持armv7和armv7s没有任何问题),此外我仍然将Build Active Architecture Only设置为NO,以确保支持所有架构

您只需要从有效体系结构列表中删除armv7s。

只需做以下事情。 – 从项目导航器中选择项目 – 从目标列表中选择目标 – 选择构建设置选项卡 – 查找“有效体系结构”设置。 它应该说armv7 armv7s。 删除armv7s,您的有效架构中只有armv7。 现在您的项目将正确编译。

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

我一直在使用Core Plot多年来得到一堆关于armv7s的“Apple Mach-O链接器警告”错误,不支持更新的“CorePlotHeader”文件夹中的某些文件(目前在我的项目中删除了文件夹并拖了新文件文件夹进入我的项目)以反映CorePlot_1.4的变化。 我还删除了旧的“libCorePlot-CocoaTouch.a”库并将其带入我的Frameworks文件夹。 一切都在模拟器中运行良好,但我无法使用iOS 7.0.2在我的iPad 4上构建。

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

1)做我上面提到的所有内容,将Build Active Architectures设置为No,然后清理

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

3)在调试时右键单击Products文件夹中的“MyApp.app”文件,您可能会看到使用您的应用程序编译的旧“libCorePlot-CocoaTouch.a”(如果修改日期是9/28/13之前)。

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

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

我在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

希望能帮助到你