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