3

我正在开发一个静态库和一个示例应用程序,我启动了这个静态库和示例应用程序,Xcode 6.1.1所以它在这个版本的 Xcode 上工作得非常好。

现在,当我上周将我的 Xcode 更新到 6.3 时,我的示例应用程序开始给我lexical or preprocessor issue,但它无法识别静态库的入口类文件。我没有改变任何东西,它仍然可以正常工作Xcode 6.1.1

更新 这里是构建设置的屏幕截图Static LibraryTest APP

静态库-->

静态库

静态库构建阶段 -->

在此处输入图像描述 测试应用程序-->

测试应用

测试应用程序的构建阶段。 在此处输入图像描述

我收到一些新的编译时错误,如下所示... 在此处输入图像描述

上述图像中的类是来自静态库(例如,B)的类,它已包含在另一个库(例如,A)中。这个包包含在一个测试应用程序中。

这就是我的标题和用户搜索路径分别看起来的样子...... 标题搜索路径

在此处输入图像描述

4

4 回答 4

3
file was built for archive which is not the architecture being linked (i386)

这个错误意味着

您的静态库没有您的测试应用程序正在使用的架构 (i386) 的任何二进制文件,因此您无法与该库链接。

armv7第一张图片验证了这一点 - 您正在为和构建静态库arm64

您是否尝试在模拟器中运行测试应用程序?尝试更改为在设备上运行,这应该会使架构链接错误消失。要在模拟器上运行,您需要为静态库(通常i386和/或x86_64)编译模拟器二进制文件。

于 2015-06-02T13:40:38.090 回答
2

确保在主应用程序的User Header Search Paths和/或Header Search Paths构建设置下,包含静态库项目目录的路径。设置路径以recursive确保它检测到所有标头。

于 2015-06-01T16:59:05.737 回答
1

前段时间我遇到了类似的问题。

解决方案 #1 尝试进行代码分析:XCode -> 产品 > 分析 https://developer.apple.com/library/ios/recipes/xcode_help-source_editor/chapters/Analyze.html

解决方案#2 尝试通过复制当前项目中的文件逐步从新项目重新创建项目。也许在某个步骤您会遇到相同的问题,因此您将能够本地化问题。

于 2015-06-01T09:37:56.367 回答
1

Xcode 6.3 使用 swift 1.2 并且需要进行一些小的更改才能使其运行。预处理器问题也发生在我的一个项目中。

您首先需要打开您的应用程序委托并将 didFinishLaunching 方法签名更新为

func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool

您可能还需要更改为!或作为?在某些地方。

如果您发布一些代码,尤其是显示错误的行,我只能提供帮助。

于 2015-06-01T10:04:30.357 回答