iOS中的动态库和动态框架有什么区别?

时间:2017-07-12 18:12:44

标签: ios xcode frameworks dynamic-library

我最近在iOS学习了关于图书馆和框架的知识。但是我对动态库和动态框架的概念感到困惑,我没有找到动态库的创建。

2 个答案:

答案 0 :(得分:1)

<强> TL; DR

  • 动态库 - 在运行时动态加载到流程中的共享代码库
  • 框架 - 与相关资源打包在一起的共享库,可以包含其他动态库

还有一个术语&#34; 伞形框架&#34; - 它是一个框架,充当一组框架和共享(动态)库的“父”


Apple的文档Loading Code at Runtime声明如下:


动态库

  

程序员经常使用不同的方式引用动态共享库   名称,例如动态链接的共享库,动态库,   DLL,dylib或只是共享库。在OS X中,所有这些名称都是指的   同样的事情:动态加载到进程中的代码库   在运行时。   

<强>框架

  

框架是与相关资源打包在一起的共享库,   安装在一个中的标题,本地化字符串和文档   标准文件夹层次结构,通常位于文件的标准位置   系统。文件夹通常包含相关的头文件,   任何格式的文档和资源文件。一个框架可能   包含自身的多个版本,每个版本可能都有自己的版本   资源,文档和头文件集。

答案 1 :(得分:0)

动态库的扩展名为.dylib(DynamicLib)。 框架中包含静态库,但也包含与这些库一起使用的标头。我甚至看到一个框架包含其中的包(资源)。我不确定Frameworks是否可以包含动态库*。

因此,请考虑像加载更简单的包装系统这样的框架。

对于动态库,您需要dlopen来加载它们,并使用dlsym来获取它们中的函数指针。使用函数指针然后dlclose关闭库的句柄。