将静态库链接到测试脚本时出错

Error while linking static library to test script

我正在为一个小项目构建一个静态库,当我用 ar 编译它时,它正确 links.

当我去包含相关的头文件和link测试脚本到存档时;

LINK = -lpthread -lcryptopp -L./path/to/archive/ -luttu
r: ../inc/uttu.hpp
  g++ -std=c++20 rnet.cpp -o r.out $(LINK)

我收到 linker 错误;

/usr/bin/ld: /tmp/cc7h6RHu.o: in function `main':
rnet.cpp:(.text+0x263): undefined reference to `np::np()'
/usr/bin/ld: rnet.cpp:(.text+0x317): undefined reference to `np::np()'
/usr/bin/ld: ./../exe//libuttu.a(peer.o): in function `Peer::Connect(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
/home/uton/code/Concord/uttu/src/peer.cpp:43: undefined reference to `void np::target<np::_tf>(np::_tf)'
/usr/bin/ld: ./../exe//libuttu.a(relay.o): in function `Relay::Foward()':
/home/uton/code/Concord/uttu/src/relay.cpp:40: undefined reference to `np::np()'
collect2: error: ld returned 1 exit status
make: *** [Makefile:8: r] Error 1

运行 ar t libuttu.a returns

linux.o
uttu.o
timeout.o
peer.o
relay.o
sec.o
np.o

我的测试脚本包含主头文件 uttu.hpp,它本身引用 np 头文件,名称为 protocols.hpp

存档文件的路径正确,存档本身包含正确的目标文件,测试脚本引用包含正确定义的主头文件。

我不知道可能出了什么问题。

看完this SO问题后,我意识到我错过了一个被覆盖的虚拟成员。