5

我对使用 Xcode 开发 iOS 应用程序有些好奇,尽管我们特别声明:

#import <QuartzCore/QuartzCore.h>

在我们的 中ViewController.h,当项目链接时,QuartzCore库不会自动链接。这是为什么?

4

3 回答 3

11

因为导入标头与链接库没有任何关系。

您需要将 QuartzCore Framework 添加到目标链接的列表库中。

在此处输入图像描述

为什么 Xcode 不会自动执行此操作?

好吧,您正在导入的标头实际上是该框架的一部分。所以 Xcode 必须扫描它的所有框架,检查它们的头文件,并可能自动链接连接的库。这对于与操作系统相关的框架当然是可行的,但对于自定义框架来说几乎是不可能的,只要 Xcode 不知道它们的位置。有时,应用程序实际上并不仅仅因为它们使用例如在标头中定义的枚举而链接到库。

于 2012-04-27T00:41:48.730 回答
2

Xcode 不会自动添加除 base 3 以外的任何库。只需链接即可。也许未来的版本会检测到,但现在你必须去构建阶段并链接它们。

于 2012-04-27T00:44:01.827 回答
2

关键是 Xcode 无法知道您的项目应该与 Quartz Core Framework 链接。

#import <QuartzCore/QuartzCore.h>说你需要 Quartz Core Framework 是不够的。您可以编写自己的库,其中包含一个名为的头文件QuartzCore.h并将其放在名为QuartzCore. 如果它在你的include文件搜索路径中,是可以使用的,除非你在你的项目中也加入了官方的Quartz Core Framework(这会导致冲突)。

还有其他例子。在 Visual Studio 中为 .NET 项目导入命名空间时,它不会自动将任何程序集添加到项目的“引用”中。这是因为您可以添加第三方程序集作为具有相同命名空间的引用。您还可以添加不同版本的官方 .NET Framework 程序集。

于 2012-04-27T00:51:18.953 回答