2

我将应用程序分为库部分和与库链接的应用程序。库使用AFNetworking,因此需要SystemConfigurationMobileCoreServices框架。它们被很好地添加到构建过程和库构建中。

为什么我需要将相同的框架添加到我的应用程序部分才能正确构建并且不会看到链接错误?

仅与库链接还不够吗?

4

2 回答 2

2

我假设该库是一个静态库。您仅在构建静态库时添加框架以访问包含文件;您没有与框架链接。这是因为静态库在构建时没有链接;它只是一个目标文件的集合。从命令行尝试此操作以列出目标文件:

$ ar t /path/to/my/library.a

当静态库与应用程序二进制文件链接时,您必须提供两者的库和框架,就像静态库中的目标文件是应用程序二进制文件源树的一部分一样。

只需将静态库视为目标文件的简单集合,它对您应该是有意义的。

于 2013-05-21T09:54:52.070 回答
1

Apple 的 iOS 框架包含动态共享库。AFAIK,当我们的应用程序启动时,会创建一个进程,并将与该进程链接的动态共享库加载到内存中。如果动态共享库已经加载到内存中(对于其他一些应用程序进程),它们将与我们的应用程序进程共享。这是每个进程的活动。

由于静态库是作为应用程序二进制文件本身的一部分链接的,并且不会创建单独的进程,因此有必要通知运行时加载静态库链接的框架。因此,在应用程序中添加静态库使用的框架也是合乎逻辑的。

于 2013-05-21T10:15:57.437 回答