如何在我创建的 C++ 程序中使用静态库?
例如,假设我执行以下操作:
1。首先我创建文件:
foo.h
,并添加以下代码:
int foo(int a);
2。我依次创建
foo.cpp
,并添加以下内容:
#include foo.h
int foo(int a)
{
return a+1;
}
3.然后我使用 GNU 的 C++ 编译器 GCC(除了我使用 G++ 版本),它看起来如下所示:
3a。
g++ foo.cpp
3b。ar rc libfoo.a foo.o
4。我创建程序的主文件,
main.cpp
"main.cpp"
#include "foo.h"
int main()
{
int i = foo(2);
return i;
}
main.cpp
编译我的 .a 静态库?我正在尝试做以下事情:
g++ -L. -lfoo prog.cpp
但是收到错误,因为找不到函数 foo
你想要:
g++ -L. prog.cpp -lfoo
不幸的是,ld 链接器对库的顺序很敏感。当尝试满足 prog.cpp 中未定义的符号时,它只会查看命令行上 prog.cpp 之后出现的库。
您还可以在命令行上指定库(如果需要,可以使用路径),而忽略 -L 标志:
g++ prog.cpp libfoo.a