【问题标题】:What is the main difference between framework and dynamic library框架和动态库的主要区别是什么
【发布时间】:2011-02-01 01:18:34
【问题描述】:

框架和动态库的主要区别是什么

【问题讨论】:

    标签: objective-c cocoa macos


    【解决方案1】:

    OS X 框架的核心一个动态链接库。框架是一个special directory structure 称为“框架包”,其中包含一个或多个版本的动态链接库,以及依赖的框架、资源、元数据等。OS X 上的其他“包”包括 .app 包(其中包含可执行文件以及资源、依赖框架等...)。

    【讨论】:

      【解决方案2】:

      动态库是一个基本概念,大部分独立于特定平台,即您可以谈论 OSX、Linux、Windows 上的动态库,意思是相同的基本事物 - 一段可重定位的目标代码,带有导出的 API 符号,由一种允许平台上的应用程序按需加载和共享它的方式。

      框架是 OSX 特定的术语。它是一个包,它定义了一些普遍认可的目录结构,并将动态库、资源、包描述和其他相关内容存储在预定义的位置。这意味着它主要具有 语义 含义,允许开发人员(以及他们创建的工具)以普遍理解的方式引用它。值得注意的是,框架根本不需要包含共享库。

      【讨论】:

      • 但是当我们说共享库时,这意味着同时运行的多个应用程序可以共享该单个库对吗?那么假设如果动态库中有一个全局变量,并且访问该变量的应用程序将拥有自己的实例,这怎么可能呢?我越来越糊涂了。
      • @prithviraj - 跨应用程序共享库代码的操作系统共享代码段。数据段通常作为“写时复制”加载,这意味着加载单个副本并且任何从不更改它的代码共享该副本。只要在库的数据段中进行更改,这些页面就会被复制到应用程序的本地内存空间中,同时仍然共享只读代码页面。
      【解决方案3】:

      Anatomy of a Framework 可能有用。具体来说,该示例中提到的Versions/Current/MyFramework 是一个共享库。该部分继续描述框架包中可能存在的其他一些内容。

      【讨论】:

        猜你喜欢
        • 2022-10-13
        • 2011-10-09
        • 2010-11-27
        • 2010-09-13
        • 2010-10-17
        • 1970-01-01
        • 2013-06-17
        • 2012-07-09
        • 1970-01-01
        相关资源
        最近更新 更多