如何将 (.a) 静态库添加到 C++ 程序中?

问题描述 投票:0回答:1

如何在我创建的 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

c++ linker
1个回答
21
投票

你想要:

g++ -L.  prog.cpp -lfoo

不幸的是,ld 链接器对库的顺序很敏感。当尝试满足 prog.cpp 中未定义的符号时,它只会查看命令行上 prog.cpp 之后出现的库。

您还可以在命令行上指定库(如果需要,可以使用路径),而忽略 -L 标志:

g++ prog.cpp libfoo.a
© www.soinside.com 2019 - 2024. All rights reserved.