iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C/C++库和XCode中的STL C库有什么区别?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我试在xcode中创建一个C库,我不知道是否选择C/C++库或STL C库选项?我注意到,STL C库选项不允许您创建一个静态库并强制您创建一个动态库。但是,C/C++库选项还允许您创建一个动态库,除了创建一个静态库。 这两个选项有什么区别,何时应该使用?我阅读了下面的说明,但不幸的是他们并不是很有帮助。 另一个注意事项,为什么静态库文件与动态库文件不同?看起来,差异主要在于如何找到库(与应用程
我试在xcode中创建一个C库,我不知道是否选择C/C++库或STL C库选项?我注意到,STL C库选项不允许您创建一个静态库并强制您创建一个动态库。但是,C/C++库选项还允许您创建一个动态库,除了创建一个静态库。

这两个选项有什么区别,何时应该使用?我阅读了下面的说明,但不幸的是他们并不是很有帮助。

一个注意事项,为什么静态库文件与动态库文件不同?看起来,差异主要在于如何找到库(与应用程序打包在一起,而不依赖于目标机器上的存在),而不是在库本身的功能代码中。如果有人可以澄清这将是很棒的。

解决方法

无法在运行时加载静态链接库,但在链接可执行文件时必须将其并入到二进制文件中。这意味着静态链接库中的代码的所有入口点都被很好地定义,并且它们的地址将不会相对于可执行代码的开始而变化(因此“静态”)。

使用动态加载的库,没有办法知道代码在哪里,所以当库在运行时加载时,需要一定量的性能开销来“绑定”加载的代码。基本上,链接被推迟到运行时间,这就是为什么它有时被称为“后期绑定”。

您选择实施的方式取决于您的使用要求。如果你想要一个自包含的可执行文件用户只需拖放到他的应用程序文件夹中,而不必担心依赖关系,静态链接库可能是要走的路。

但是对于更大规模的项目,在提供大量功能的应用程序中,一次加载所有功能可能是禁止和不必要的。提供一组动态可加载库可以节省内存并缩短启动时间。然后,当用户访问功能时,相关代码被加载,并且可能会卸载一段时间内未使用的功能

此外,如果您对代码进行了更改,则可能只需重新分配一个或两个库,而不必重新编译并重新链接并重新分发整个可执行文件。需要我提到插件的前景?

上述两个模板之间的差异是微妙的。都按照GNU99标准编译C。但C/C++库模板设置xcode根据C / GNU 0x“标准”编译C。 C / GNU 0x后来于2011年正式发布为C / GNU 11。两个模板认使用libc,但STL C模板允许您选择与旧版本的libstdc链接。你为什么要这样做?如果您的代码链接到libc,但是您也链接到引用libstdc的其他库,并且您跨越冲突的符号运行,您可能可以通过与libstdc链接解决此问题。 STL C库模板还允许您要求编译器遵守C11标准,不包括GNU 11扩展,或者返回到C / GNU 98(例如,如果需要编译代码)。

大佬总结

以上是大佬教程为你收集整理的C/C++库和XCode中的STL C库有什么区别?全部内容,希望文章能够帮你解决C/C++库和XCode中的STL C库有什么区别?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。