一,从官网上下载最新源码
http://www.live555.com/liveMedia/public/
二,解压缩,然后在live目录下创建空的解决方案,然后新建以下4个静态库项目
BasicUsageEnvironmentliveMediagroupsockBasicUsageEnvironment
然后导入相关源文件(除include下文件)
选中4个项目,右击——>属性——>c/c++——>常规——>附加包含目录:..\UsageEnvironment\include;..\liveMedia\include;..\groupsock\include;..\BasicUsageEnvironment\include;
然后在,属性——>c/c++——>预编译头——>预编译头,选择“不使用预编译头”
(同时选中4个项目,可以统一操作,不用再一个一个项目去修改,也能减少犯错机会)
三,编译
在编译liveMedia是出现 c4996 sprintf安全错误,在vs2012及以前这只是一个警告不是错误,但在vs2017里是一个错误,解决方法:
右键工程名-->属性-->C/C++-->预处理器-->预处理器定义,编辑右边输入框加入:_CRT_SECURE_NO_WARNINGS,确定后再编译,生成成功。
在编译groupsock工程时,出现gethostbyname安全性错误,解决方法:
右键工程名-->属性-->C/C++-->预处理器-->预处理器定义,编辑右边输入框加入:_WINSOCK_DEPRECATED_NO_WARNINGS,确定后再编译,生成成功。四,搭建openRTSP工程进行测试
在解决方案下新建一个空项目,
1,加入 include头文件依赖目录
2,加入lib库头文件路径:
3,加入lib库依赖
然后编译就可以成功了!
(说一个自己犯的错误:在编译liveMedia库时忘记把liveMedia目录下的.c文件也添加到工程中,造成后面编译openRTSP时出现如下错误:
liveMedia.lib(RTCP.obj) : error LNK2019: 无法解析的外部符号 _OnExpire,该符号在函数 "private: void __thiscall RTCPIn,
在liveMedia工程引入相关.c文件后重新编生成新的liveMedia.lib库后问题解决
)
参考http://www.cnblogs.com/skyseraph/archive/2012/04/11/2442840.html