live555工程建立与调试
Live555是一款开源的RTSP服务器,下载地址http://www.live555.com/liveMedia/public/
下载下来的代码只有源文件,没有工程文件。那么如何使用VS 调试live555的源代码呢,下面将一步一步进行介绍。
使用的编译环境为win7 + vs2008
第一步打开vs2008,新建一个解决方案,目录为解压之后的代码目录,名称为live555,类型为win32 控制台程序
这样会生成一个空的解决方案,并且会有一个工程为live555
第二步,在解决方案中,新添加几个工程名为BasicUsageEnvironment, groupsock,liveMedia,UsageEnvironment
第三步,分别往几个空的工程中添加.hh与.cpp文件
BasicUsageEnvironment 工程对应的代码目录为BasicUsageEnvironment
groupsock工程对应的代码目录为groupsock
live555工程对应的代码目录为liveMedia
liveMedia工程对应的代码目录为liveMedia
UsageEnvironment工程对应的代码目录为UsageEnvironment
分别将这几个目录中.hh与.cpp添加到对应工程的Header Files 与Source Files文件夹中
第四步: 添加头文件目录
整个工程的依赖关系如下:
1 . live555这个工程使用到了其他所有工程,所以要添加所有工程的.h文件目录
添加方法:右击live555工程,在Configuration Properties / C/C++ / General 中找到Additional Include Directories
添加如下的目录
....BasicUsageEnvironmentinclude;
....liveMediainclude;
....mediaServer;
....groupsockinclude;
....UsageEnvironmentinclude;
这里一定要使用相对路径,不然更换一个目录就会编译不过
2 . BasicUsageEnvironment工程, 添加头文件目录
....BasicUsageEnvironmentinclude;
....UsageEnvironmentinclude;
....groupsockinclude;
3. groupsock工程,添加头文件目录
....UsageEnvironmentinclude;
....groupsockinclude;
4. livemedia工程,添加头文件目录
....liveMediainclude;
....groupsockinclude;
....UsageEnvironmentinclude;
5. UsageEnvironment工程,添加头文件目录
....UsageEnvironmentinclude;
....groupsockinclude;
第五步,设置编译依赖
编译时,由于各个工程会调用别的工程的函数,所以要设置编译依赖
右击解决方案,选择project dependencies。
选择live555, 将其他几个工程勾选上。表示在最后连接阶段,需要用到其他几个工程生成的库文件。
另外,代码里面没有导入win32的网络库,所以编译时会产生很多错误,可以在NetCommon.h头文件中添加
#pragma comment( lib, "ws2_32.lib"), 这样就没问题了
到此,工程就已经建好了,应该可以直接调试运行起来。
- 关于MySQL DNS解析探究之二:unauthenticated user
- Thrift Direct Memory OOM问题解决方法
- Mapreduce程序中reduce的Iterable参数迭代出是同一个对象
- 内部威胁那些事儿(二):系统破坏
- 从用户行为去理解内容-item2vec及其应用
- Dubbo与Zookeeper、SpringMVC整合和使用(入门级)
- Websocket HandShake Sec-WebSocket-Accept 生成策略
- 关于JVM CPU资源占用过高的问题排查
- ActiveMQ简单介绍以及安装
- Java Process destroy方法kill进程,返回码测试
- 百度人脸识别API Java调用
- Java Socket Timeout总结
- 求一个数组中子数组的最大和算法(Java实现)
- JDBC批量提交SQL的几点问题解答
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- mongodb 4.0副本集搭建
- 浅析Kubernetes Pod重启策略和健康检查
- SpringBoot2 整合Ehcache组件,轻量级缓存管理
- 数据源管理 | 分布式NoSQL系统,Cassandra集群管理
- 【NPM库】- 0x03 - Express
- 数值微分|多项式的导数计算
- 让windows 10 内置ubuntu(WSL)成为扩增子分析生产力
- 手把手教你自定义Spring Boot Starter
- 高职考技能提升教程013期 冒泡排序法和选择排序法
- python带你剪辑视频
- python自制有声小说
- CVE-2017-8570及利用样本分析
- “既生 ExecutorService, 何生 CompletionService?”
- XXE -XML External Entity
- Vivado时序收敛技术(一) Baseline基础理论