如果我在 Linux 中用 C++ 创建一个静态库并生成“.a”文件,我(或其他人)如何使用该库?例如,我的库定义了一个类。我认为仅仅提供“.a”文件是不够的,还需要提供头文件。我如何知道“.a”文件必须提供哪些头文件?
例如,我是否需要提供我的库代码中任何位置包含的所有头文件?
头文件提供类和函数的“声明”。编译器需要这些,因此它可以a)验证您是否传递了正确的参数,和/或设置了类/结构的正确数据成员,b)以便它知道如何调用这些函数。
void do_something(int a, std::string& s);
告诉编译器该函数需要两个参数:int
, and a string&
。这验证了您正在传递正确类型的参数(语言级构造),并且它解释了编译库中的目标代码所期望的内容(两个参数 - 如何通过调用约定确定。)
如果该编译库正在使用另一个库中的代码,则您do not必须提供这些标头,因为它们与您编写的代码无关。这些库在“应用程序二进制接口”(ABI)级别工作,而不是“应用程序编程接口”(API)级别。这意味着它们只是传递指针等,而不是 C 类型的参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)