Nav*_*Nav 5 frameworks static-libraries dynamic-library ios
我遇到过多个站点,描述框架可以同时包含静态和动态库。但是我如何确定框架实际包含的是动态库还是静态库。我想首先使用扩展名(.a 表示静态库,.dylib 表示动态库),但我在我正在试验的框架内看到的只是没有为内部打包的二进制文件提供扩展名。有什么办法可以找到它是静态库还是动态库。
我还阅读了 Landon Fuller 关于静态库的帖子http://landonf.bikemonkey.org/code/ios/Radar_15800975_iOS_Frameworks.20140112.html ,其中他提到框架为库提供了两级命名空间,但它是否涵盖了正常的调试符号而不是只是依赖项,即使对于打包在框架内的静态库,它也能工作。
例如,如果我在框架内以及它所链接到的项目代码库中有相同的调试符号会发生什么。在这种情况下,两级命名空间会起作用吗?
同样根据作者http://ddeville.me/2014/04/dynamic-linking/ 框架是一个包含动态库、头文件和资源的包或包。
根据以下帖子库?静止的?动态的?还是框架?在另一个项目中的项目 它说框架可以包含静态和动态库。
我对此很困惑。有人可以解释 iOS 中的框架,它们包含什么以及它们如何在两级命名空间方面工作。
要回答您问题的第一部分,是的,您的理解是正确的,框架只是捆绑库映像(编译的机器代码、标头、资源等)的目录结构。要验证框架实际上是静态库还是动态库,请使用以下命令
file Path/To/YourLib.framework/YourLib
Run Code Online (Sandbox Code Playgroud)
如果特定架构(armv7、arm64 等)的输出表示ar archive它是静态库,另一方面,如果它表示任何架构,dynamically linked shared library那么它毫不奇怪是动态库。
如果您自己创建框架项目,您可以通过设置Mach-O Type项目的构建设置来选择构建静态或动态图像。
如果在多个地方定义相同的符号(例如函数名称),则存在不同的可能性。在几乎所有情况下,行为都会出现链接时间错误,抱怨多个符号异常是动态链接框架,在这种情况下,您可能会看到不一致的行为,其中符号将从首先加载到内存中的动态框架加载。
| 归档时间: |
|
| 查看次数: |
2581 次 |
| 最近记录: |