我想知道如何在我创建的C ++中使用静态库,首先是lib:
// header: foo.h
int foo(int a);
// code: foo.cpp
#include foo.h
int foo(int a)
{
return a+1;
}
然后我首先编译库:
现在我想在某些文件中使用这些库:
// prog.cpp
#include "foo.h"
int main()
{
int i = foo(2);
return i;
}
我现在必须如何编译这些? 我做了:
g++ -L. -lfoo prog.cpp
但是因为找不到函数foo而得到错误
答案 0 :(得分:12)
你想:
g++ -L. prog.cpp -lfoo
不幸的是,ld链接器对库的顺序很敏感。当试图在prog.cpp中满足未定义的符号时,它只会查看在命令行上出现在progters前面的库。
您也可以在命令行中指定库(如有必要,使用路径),并忘记-L标志:
g++ prog.cpp libfoo.a