live555编译过程中出现的问题 undefined reference to `HashTable::create(int)

最近项目中需要用的live555框架. 在使用过程中遇到的问题记录下来. live555主要有四个组件:

四个目录,分别对应Live555的四个库:

    UsageEnvironment目录,生成的静态库为libUsageEnvironment.a,这个库主要包含一些基本数据结构以及工具类的定义

    groupsock目录,生成的静态库为libgroupsock.a,这个库主要包含网络相关类的定义和实现

    liveMedia目录,生成的静态库为libliveMedia.a,这个库包含了Live555核心功能的实现

    BasicUsageEnvironment目录,生成的静态库为libBasicUsageEnvironment.a,这个库主要包含对UsageEnvironment库中一些类的实现.

在testProgs目录中是一些应用的例子, 编译testRTSPClient.cpp, 生成RTSP视频流拉流客户端. 编译的依赖库文件就是上面提到的4个静态库. 但是奇怪的是一直会提示错误:

../../../live555/liveMedia/libliveMedia.a(Media.o): In function `MediaLookupTable::ourMedia(UsageEnvironment&)':
Media.cpp:(.text+0x1d8): undefined reference to `HashTable::create(int)'
../../../live555/liveMedia/libliveMedia.a(Media.o): In function `MediaLookupTable::MediaLookupTable(UsageEnvironment&)':
Media.cpp:(.text+0x472): undefined reference to `HashTable::create(int)'
../../../live555/liveMedia/libliveMedia.a(RTCP.o): In function `RTCPMemberDatabase::reapOldMembers(unsigned int)':
RTCP.cpp:(.text+0xd3c): undefined reference to `HashTable::Iterator::create(HashTable const&)'
../../../live555/liveMedia/libliveMedia.a(RTCP.o): In function `RTCPInstance::RTCPInstance(UsageEnvironment&, Groupsock*, unsigned int, unsigned char const*, RTPSink*, RTPSource*, unsigned char)':

最后排查是因为链接库文件的顺序问题, 解决方法有两个:

1. 把链接库顺序改成-lliveMedia -lBasicUsageEnvironment -lgroupsock -lUsageEnvironment

2. 在编译链接库前后加上-Wl,--start-group 和 -Wl,--end-group, 也就是: -Wl,--start-group -lliveMedia -lBasicUsageEnvironment -lgroupsock -lUsageEnvironment -Wl,--end-group

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值