头文件仅包含函数的声明,函数的实际实现在库中。如果他们不想共享源代码,他们可以共享 obj 文件。 当函数的实现也可以在另一个 C++ 文件中完成时,为什么我们要使用库?
通常,一个库是多个翻译单元的集合。库存档只是一种将单独的对象文件捆绑到一个 blob 中的便捷方法。
除此之外,共享库还增加了在多个依赖项之间动态加载和共享常用库的能力,这是普通目标文件无法实现的。
通常作为其他开发人员实现的函数集合使用的库,并且可以由其他开发人员“作为一般使用”使用,还提供了最小化代码的好处,并且您还可以从库中获取函数并编辑实现需要。
正如其他人所解释的,我想添加更多内容,库为您提供跨多个系统的可重用性,无论它们是用哪种语言编写的,除非它遵循相同的ABI。例如,通过用 Rust 语法包装相同的函数,用 C 编写的库可以轻松地与 Rust 一起使用。
例如,C 中的函数具有此签名。
int return_num(int a);
如果我们用 Rust 编写它,它将以与 C 相同的方式进行交互。
extern "C" {
fn return_num(x: i32) -> i32;
}