我正在开发一个静态库和一个示例应用程序,我使用Xcode 6.1.1
启动了这个静态库和示例应用程序,所以它对这个版本的Xcode工作得非常好。
现在当我上周将我的Xcode更新为6.3时,我的Sample应用程序开始给我lexical or preprocessor issue
并且它无法识别静态库的入口类文件。我没有改变任何东西,它仍然适用于Xcode 6.1.1
更新
以下是Static Library
和Test APP
静态库 - >
静态库构建阶段 - >
测试应用 - >
构建测试应用程序的阶段。
我收到了一些新的编译时错误,如下所示......
图像中的上述类是来自静态库(比如说B)的类,它们已被包含在另一个库中(例如,A)。此软件包包含在测试应用程序中。
这就是我的标题和用户搜索路径分别看起来......
答案 0 :(得分:3)
file was built for archive which is not the architecture being linked (i386)
此错误表示
您的静态库没有任何针对您的测试应用程序正在使用的体系结构的二进制文件(i386),因此您无法与该库链接。
第一张图片验证了这一点 - 您只为armv7
和arm64
构建静态库。
您是否尝试在模拟器中运行Test App?尝试更改以在设备上运行,这应该会使架构链接错误消失。要在模拟器上运行,您需要为静态库编译模拟器二进制文件(通常为i386
和/或x86_64
)。
答案 1 :(得分:2)
确保在主应用的User Header Search Paths
和/或Header Search Paths
版本设置下,包含静态库项目目录的路径。将路径设置为recursive
以确保其检测到所有标头。
答案 2 :(得分:1)
我前段时间遇到过类似的问题。
解决方案#1 尝试进行代码分析:XCode - >产品>分析 https://developer.apple.com/library/ios/recipes/xcode_help-source_editor/chapters/Analyze.html
解决方案#2 尝试通过复制当前项目中的文件,逐步从新项目中重新创建项目。也许在某个步骤,您将得到相同的问题,因此您将能够本地化问题。
答案 3 :(得分:1)
Xcode 6.3使用swift 1.2并且需要进行一些微小的更改才能使其运行。预处理器问题也发生在我的一个项目中。
您首先需要打开您的app委托并将didFinishLaunching方法签名更新为
func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool
您可能还需要更改为!还是作为?在某些地方。
如果您发布一些代码,我只能提供帮助,尤其是显示错误的行。