使用vs2017编译live555

一,从官网上下载最新源码

http://www.live555.com/liveMedia/public/

二,解压缩,然后在live目录下创建空的解决方案,然后新建以下4个静态库项目

BasicUsageEnvironment
liveMedia
groupsock
BasicUsageEnvironment

 然后导入相关源文件(除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

posted @ 2018-03-22 13:45  郭流水  阅读(546)  评论(0编辑  收藏  举报