之前发的《Windows7上用VS编译本地使用的live555》有各种问题,而且最近换了硬盘,重装系统,所以重新写一篇。
1 环境
系统:Windows 10 专业版 1809
编辑器:Visual Studio Community 2017
Live555:2018-08-04
2 准备工作
下载源码
官网:
http://www.live555.com/liveMedia/public/
备用:
https://web.archive.org/web/20180814231009/http://www.live555.com/liveMedia/public/
下载live555-latest.tar.gz
![](https://img.haomeiwen.com/i4138263/d199a174343b396a.png)
下载VS
安装VS
安装时选上“使用C+ +的桌面开发”。已经安装过VS但是没有C+ +组件的,在开始-程序和功能中找到Visual Studio Community 2017,选择修改,选上“使用C+ +的桌面开发”。
![](https://img.haomeiwen.com/i4138263/8a6d025a16d2a745.png)
![](https://img.haomeiwen.com/i4138263/d4a67e4d37b7e91f.png)
![](https://img.haomeiwen.com/i4138263/46e58d2968db98ac.png)
![](https://img.haomeiwen.com/i4138263/eb671e095f874236.png)
3 新建项目
新建live555项目,选择Windows控制台应用程序
![](https://img.haomeiwen.com/i4138263/0a9a96217b41f233.png)
设置项目属性为静态库
![](https://img.haomeiwen.com/i4138263/2702b55fa4f65a38.png)
设置不使用预编译头
![](https://img.haomeiwen.com/i4138263/7588392c462afb30.png)
选文件-添加-新建项目,名称groupsock,空项目
![](https://img.haomeiwen.com/i4138263/6bd5e60c765f8033.png)
这个也要设置项目属性为静态库,用同样的方法新建项目liveMedia、UsageEnvironment。
添加项目mediaServer,不用设置静态库。
![](https://img.haomeiwen.com/i4138263/9209c1248c90f34e.png)
4 添加代码
把live555源码解压出来的live目录下的BasicUsageEnvironment、groupsock、liveMedia、mediaServer、UsageEnvironment的源文件和头文件复制到对应工程目录下。
![](https://img.haomeiwen.com/i4138263/c4e65db981b93d2b.png)
把c和cpp文件添加进源文件目录,h和hh文件添加进头文件目录
![](https://img.haomeiwen.com/i4138263/57b35eb26858c9fd.png)
设置附加包含目录
![](https://img.haomeiwen.com/i4138263/0108870ede4ed82d.png)
5 生成
右键项目目录-生成
分别生成BasicUsageEnvironment、groupsock、liveMedia、UsageEnvironment。
可能会出现‘_snprintf’错误,解决此错误的方法是在选择项目->属性->配置属性->C/C++->预处理器->预处理器定义,添加如下信息:_CRT_SECURE_NO_DEPRECATE
更多报错看第7节。
6 编译运行
按F5开始调试
![](https://img.haomeiwen.com/i4138263/40d4c5887420f61d.png)
复制视频文件到mediaServer目录
![](https://img.haomeiwen.com/i4138263/9437f2ef73fad0fb.png)
打开VLC,按Ctrl+N,输入URL
![](https://img.haomeiwen.com/i4138263/e5cbb2444d164df8.png)
开始播放
![](https://img.haomeiwen.com/i4138263/c4ae392c2372f69f.png)
结束。
7 附上一些报错
生成BasicUsageEnvironment报错:
错误 C4996 '_snprintf': This function or variable may be unsafe. Consider using _snprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. BasicUsageEnvironment d:\code\vs\live555\basicusageenvironment\basicusageenvironment0.cpp 78
解:
选择项目->属性->配置属性->C/C++->预处理器->预处理器定义,添加如下信息:_CRT_SECURE_NO_DEPRECATE
编译报错:
错误 C4996 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings GroupSock d:\code\vs\live555\groupsock\netaddress.cpp 108
解:
Project properties -> Configuration Properties -> C/C++ -> General -> SDL checks -> No
![](https://img.haomeiwen.com/i4138263/79f6f89bb8d9104c.png)
参考:
https://jingyan.baidu.com/article/1709ad8097e5904634c4f03e.html
编译报错:
错误 C1083 无法打开预编译头文件: “Debug\MediaServer.pch”: No such file or directory MediaServer d:\code\vs\live555\mediaserver\stdafx.cpp 5
解:
Right-click on your project in the Solution Explorer.
Click Properties at the bottom of the drop-down menu.
At the top left of the Properties Pages, select All Configurations from the drop-down menu.
Open the C/C++ tree and select Precompiled Headers
Precompiled Header: Select Use (/Yu)
Fill in the Precompiled Header File field. Standard is stdafx.h
Click Okay
If you do not have stdafx.h in your Header Files put it there. Edit it to #include all the headers you want precompiled.
Put a file named stdafx.cpp into your project. Put #include "stdafx.h" at the top of it, and nothing else.
Right-click on stdafx.cpp in Solution Explorer. Select Properties and All configurations again as in step 4 ...
... but this time select Precompiled Header Create (/Yc). This will only bind to the one file stdafx.cpp.
Put #include "stdafx.h" at the very top of all your source files.
Lucky 13. Cross your fingers and hit Build.
参考 https://stackoverflow.com/questions/6096384/how-to-fix-pch-file-missing-on-build
编译报错:
fatal error C1010: 在查找预编译头时遇到意外的文件结尾
解决方式:
一.
1) 在解决方案资源管理器中,右击相应的.cpp文件,点击“属性”
2) 在左侧配置属性中,点开“C/C++”,单击“预编译头”
3) 更改右侧第一行的“创建/使用预编译头”,把选项从“使用预编译头(/Yu)”改成“不使用预编译头”
4) 注:每一个报错的.cpp都要如此更改哦~辛苦一下呗~
二.
(不推荐)
1)在解决方案右击工程,点击属性
2)在配置属性 -> c/c++ -> 预编译头 中 将 “使用预编译头(/YU)” 改为 “不适用预编译头”
这种做法会使每次编译过程非常缓慢
![](https://img.haomeiwen.com/i4138263/094b0b1ad09d45d3.png)
参考 http://blog.sina.com.cn/s/blog_58649eb30100th2k.html
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2665 “_snprintf_s”: 2 个重载中没有一个可以转换所有参数类型 groupsock d:\projects\vs\live555\groupsock\groupsock.cpp 545
网友评论