日期:2014-05-16  浏览次数:20945 次

调用库的时候,出现undefined reference to
情况是这样的。
  我现在有一个库,是别人的开发的,编译后生成libpcap_f.a。我用ar -t查看如下:

[root@suowenair server]# ar -t libpcap_f.a 
bonree_dump.o
event.o
http_file.o
network_dump.o
port_table.o
ssl_file.o
tcp_connection.o
thread_mix.o


我自己写的另一个程序调用这个库
但是却出现了

server.o: In function `MsgProc::Proc_e_msg_httpData()':
server.cc:(.text+0xa5c): undefined reference to `bonree::EventListenerMaunal::Next()'
server.o: In function `MsgProc::CloseAdaptor()':
server.cc:(.text+0xf48): undefined reference to `bonree::BonreeDump::Stop()'
server.cc:(.text+0xf64): undefined reference to `bonree::BonreeDump::~BonreeDump()'
server.o: In function `MsgProc::OpenAdaptor()':
server.cc:(.text+0x1174): undefined reference to `bonree::BonreeDump::BonreeDump()'
server.cc:(.text+0x11a0): undefined reference to `bonree::EventListenerMaunal::EventListenerMaunal()'
server.cc:(.text+0x11fc): undefined reference to `bonree::BonreeDump::RegisterListener(bonree::EventListener*)'
server.cc:(.text+0x125c): undefined reference to `bonree::BonreeDump::Start(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const*)'


我已经引用了该库,但是还是出现这种错误,不理解。我自己开发的程序并且也包含了libpcap_f.a这个库的接口的头文件。

------解决方案--------------------
gcc加上-lpcap_f参数, -L路径  (即libpcap_f.a的路径)
------解决方案--------------------
注意要把 -lpcap_f 放在靠后的位置。
g++ -o server server.o -lpcap_f

如果用下面的命令
g++  -lpcap_f -o server server.o

就会出现楼主描述的问题
undefined reference to `bonree::BonreeDump::BonreeDump()'
------解决方案--------------------
引用:
引用:gcc加上-lpcap_f参数, -L路径  (即libpcap_f.a的路径)

引用:注意要把 -lpcap_f 放在靠后的位置。
g++ -o server server.o -lpcap_f

如果用下面的命令
g++  -lpcap_f -o server server.o

……


-L. -lpcap_f参数必需放在gcc参数中的最后..不能放在前面.