我试图弄清楚如何尽可能“有效”地使用静态库(带有 .a 扩展名)。我研究静态库的原因是因为我想将几个 .h 和 .cpp 文件中的代码放入一个文件中,然后我可以轻松地为不同的项目移动它。
我创建了一个文件geometry.h,其中包含例如
double hypotenuse(double, double);
以及带有定义的geometry.cpp 文件。我创建了一个 libgeo.a 文件并在另一个程序(比如 main.cpp)中对其进行了测试。我编译这个程序是这样的:
g++ main.cpp -o test -L. -lgeo
我得到错误'hypotenuse' was not declared in this scope
。对此的明显补救措施是double hypotenuse(double, double);
在 main.cpp 中添加声明,就像在 geometry.h 中一样,但我为什么要为库中包含的类和函数这样做呢?我可以在 main.cpp 中编写#include "geometry.h"
,但我必须始终拥有头文件,而我想使用库的原因是拥有一个包含有用代码的文件。
我认为拥有一个库的原因是这样您就不需要随身携带一堆不同的文件,但是如果我必须重新声明我需要的所有内容,那么 .a 文件有什么意义呢?有什么我错过的吗?.a 库通常如何使用?