操作系统:Windows 10

IDE: Visual Studio 2019

GitHub:https://github.com/versatica/libmediasoupclient/

官网文档:https://mediasoup.org/documentation/v3/libmediasoupclient/

一、前言

Windows版本的Mediasoup客户端需要基于libmediasoupclient和libwebrtc开发,关于这两个静态库如何编译我已经在前面两篇文章中有详细说明了,请移步:Google开源项目WebRTC下载及编译、Windows平台下libmediasoupclient编译指南。走到这一步可以说很不容易了,前方仍然荆棘密布,危险警告。如果想要抄近道,比如直接拿别人编译好的libmediasoupclient和libwebrtc,我奉劝早点放弃这种幼稚的想法,因为项目依赖关系过于复杂,实际行不通的,还是得一步一个脚印的走。

二、新建项目

Mediasoup客户端除了需要libmediasoupclient和libwebrtc提供的网络通信功能之外,还需要创建用户界面,这里我使用的是Qt 5.15.2,由于之前工作的关系,我对这套GUI框架可以说十分熟悉了。

首先,我们使用VS2019新建一个Qt项目,创建一个主窗口。然后添加一个新的类:MediasoupApi,用于封装Mediasoup提供的接口。类的构造函数先实现一个最简单的版本号打印:

#include "MediasoupApi.h"
#include <iostream>
#include <mediasoupclient.hpp>MediasoupApi::MediasoupApi()
{std::string ver = mediasoupclient::Version();std::cout << ver << std::endl;
}

三、项目配置

1、静态库头文件

找到libmediasoupclient和libwebrtc静态库的头文件,并添加到项目。

在项目属性 > 配置属性 > c/c + + > 常规 > 附加包含目录中添加:

D:\Github\libmediasoupclient\include
D:\Github\libmediasoupclient\deps\libsdptransform\include
D:\libwebrtc\src
D:\libwebrtc\src\third_party\abseil-cpp

2、链接静态库

找到libmediasoupclient和libwebrtc静态库文件,并添加到项目。

在项目属性 > 配置属性 > 链接器 > 输入 > 附加依赖项中添加:

D:\libwebrtc\src\out\Default\obj\webrtc.lib
D:\Github\libmediasoupclient\build\Release\mediasoupclient.lib

3、宏定义

在项目属性 > 配置属性 > c/c + + > 预处理器 > 预处理器定义中添加:

NOMINMAX
WIN32
_WINDOWS
NDEBUG
WEBRTC_WIN

4、运行库

项目属性 > 配置属性 > c/c + + > 代码生成 > 运行库,这项需要改为MT模式。

5、链接libwinmm

在MediasoupApi.cpp中添加#pragma comment(lib, "winmm.lib "),否则编译时会报错:

无法解析的外部符号 __imp__timeGetTime

6、控制台打印

如果想要在程序运行后,查看控制台打印

需要在项目属性 > 配置属性 > 生成事件 > 生成后事件 > 命令行中添加:

editbin /SUBSYSTEM:CONSOLE $(OutDir)\$(ProjectName).exe

四、编译运行

项目配置完成后就可以编译运行查看效果了,这里打印版本号为3.1.2即说明我们已经成功引入libmediasoupclient了。

Windows平台下Mediasoup客户端开发指南相关推荐

  1. Windows平台下Glade+GTK开发环境的搭建

    [@.1 MVVM设计模式与Glade] 做上层软件开发的程序员可能对于MVVM模式比较熟悉,这是一种经典的软件设计模式,很好的将用户界面与后台处理之间分层开,通过属性.事件绑定这种统一的" ...

  2. php生鲜超市系统,毕业论文:基于PHP平台下的Ajax开发实践—网上生鲜超市系统的开发...

    毕业论文:基于PHP平台下的Ajax开发实践-网上生鲜超市系统的开发 发表时间:2013-5-8 12:17:49 大学学士毕业论文 基于PHP平台下的Ajax开发实践 --网上生鲜超市系统的开发 专 ...

  3. Windows平台下Makefile学习笔记

    来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译平台的问题(发现一些开源代码已经在使用VS2010开发,但我还没安 ...

  4. Windows平台下NS2网络仿真环境的搭建

    NS2(Network Simulator 2) 是一种针对网络技术的源代码公开的.免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块几乎涉及到了网络技术 ...

  5. windows平台下,有什么好的分屏软件推荐?3款让窗口布局更合理的App

    windows平台下,有什么好的分屏软件推荐?Windows 10 系统为例,系统自带功能支持二分屏/三分屏/四分屏的分屏方式.比如用户通过鼠标将应用窗口拖到屏幕边缘,窗口会自动以占据 1/2 屏幕大 ...

  6. windows平台下的mysql启动等基本操作

    一.windows下启动和停止mysql ======================= mysql安装好之后,需要启动mysql服务,否则无法访问到. 当我们在windows平台下,且使用二进制分发 ...

  7. [转]Windows平台下Makefile学习笔记

    Windows平台下Makefile学习笔记(一) 作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译 ...

  8. Windows平台下的SOCKS5代理配置与网络安全

    本文将介绍在Windows平台下配置SOCKS5代理的方法,并探讨该代理协议在网络安全中的应用.通过正确配置SOCKS5代理,用户可以提高网络连接的安全性和隐私保护. 在当今信息时代,网络安全问题备受 ...

  9. 在windows平台下php使用imagick库把pdf转换成(合并)图片

    在windows平台下php使用imagick库把pdf转换成(合并)图片 开发背景 上传的word文档需要转换成图片,在网上找了资料,主要是先转换成pdf: 1. 在windows下用com组件加上 ...

最新文章

  1. python小项目案例-python_flask小项目实例-编一个小网站
  2. oracle创建外键约束的两种方式
  3. 上线数据导入的几个注意事项
  4. Rhythmk 学习 Hibernate 08 - Hibernate annotation 关联关系注解
  5. Cpp / 空指针对象调用函数的不同结果
  6. 在Linux上安装Memcached服务(自己测试过了)
  7. 撸个微信小程序的省市区选择器
  8. python 向量取整数_随机整数向量| 使用Python的线性代数
  9. 针对业务系统的开发,如何做需求分析和设计1
  10. 五子棋项目结束总结_五子棋比赛活动总结
  11. 一件虚拟连衣裙价值9500美元?然而这只是数字服装的开始……
  12. 苹果邮箱怎么登录qq邮箱_电子邮箱 电子邮箱格式怎么写
  13. 目标文件夹访问被拒绝,您需要权限来执行此操作
  14. 【7gyy】教大家设置一个类似手机的锁屏界面
  15. MT7621芯片性能,MT7621路由器参数介绍
  16. linux编译符号那些事儿
  17. 【计算机网络】PPP协议
  18. qtablewidget 复选框选中_QTableWidget中checkBox如何判断复选框是否被选中
  19. P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks论文笔记
  20. 最近火爆的chatgpt,程序员如何使用其进行代码开发

热门文章

  1. laravel中汉字转拼音包
  2. 基于传染病模型中的再生数R0的讨论【基于matlab的动力学模型学习笔记_2】
  3. Jquery+javascript制作支付网页数字键盘
  4. 「课程」宏观经济学-北京大学光华管理学院
  5. 8.17 诺瓦星云笔试
  6. python车牌识别系统抬杆_车牌识别系统不抬杆的原因和解决办法
  7. SRM是什么意思?盘点4个顶级SRM系统
  8. 【Linux驱动】驱动设计硬件基础----串口、I2C、SPI、以太网接口、PCIE
  9. 从回测到实盘系列(2):如何让回测更贴近实盘结果
  10. this指针的作用和用法