Answers:
C ++旨在通过支持面向对象编程来简化,自动化程度更高的语言来改进C语言。但是它并没有改变或改善C处理外部库和头文件的方式。C ++没有像更现代的语言那样的模块系统-它仍然使用C预处理器和链接器系统。由于C ++的既定目标之一是与C代码的向后兼容性,因此这并不奇怪。任何C ++模块系统都必须与旧的C头文件/链接器系统一起工作。C ++标准委员会只是没有去设计一个更现代的模块系统。(尽管他们正在努力,请参阅下面的Klaim评论。)
这不是技术障碍。在Linux上,“特殊zip文件”是使用软件包管理器安装的library-dev软件包,设置include和linker标志就像configure.ac
在使用pkg-config进行设置的几行代码中一样简单。
Pkg-config也可用于Windows,但是文化障碍阻碍了它的广泛采用。Unix一直具有通过分发源代码来实现可移植性的悠久历史,因此它们包括免费的开发工具。Windows具有鼓励仅二进制分发并向开发人员收费的工具的悠久历史。当您靠出售图书馆赚钱时,让第三方更轻松地提供它们是没有意义的。