webrtc中peerconnection_client生成vs工程文件

2023-11-03

下面是将peerconnection_client从整个webrtc工程文件中分离出来的过程记录

一 webrtc项目的本地编译

生成Ninja配置文件
gn gen --target=x64 --args=“is_clang = false use_lld=false use_custom_libcxx = false use_rtti=true rtc_include_tests=false enable_iterator_debugging=true symbol_level=0 is_component_build=false” --ide=vs2019 out/x64_debug_20210212

编译
ninja -C out/x64_debug_20210212
编译的debug版本的,ide用的是vs2019,我的webrtc的版本是2019年4月份的,69

二 创建桌面应用程序

在这里插入图片描述这里要创建空的桌面项目,而不是控制台项目。
然后将webrtcDemo中的peerconnection_client的源文件复制到创建的vs项目中
在这里插入图片描述
vs工程文件
在这里插入图片描述

三 配置vs项目的属性

根据peerconnection_client.ninja文件配置项目属性,右键项目,打开属性页。

设置包含目录

在这里插入图片描述
根据Ninja配置文件中include_dirs设置包含的头文件目录,这里是我的
G:\webrtc\code\src\out\x64_debug_20210212\gen
G:\webrtc\code\src
G:\webrtc\code\src\third_party\abseil-cpp
G:\webrtc\code\src\third_party\libyuv\include
G:\webrtc\code\src\third_party\jsoncpp\overrides\include
G:\webrtc\code\src\third_party\jsoncpp\source\include

添加预处理器

在这里插入图片描述_DEBUG
_WINDOWS
USE_AURA=1
NO_TCMALLOC
FULL_SAFE_BROWSING
SAFE_BROWSING_CSD
SAFE_BROWSING_DB_LOCAL
CHROMIUM_BUILD
_HAS_EXCEPTIONS=0
__STD_C
_CRT_RAND_S
_CRT_SECURE_NO_DEPRECATE
_SCL_SECURE_NO_DEPRECATE
CERT_CHAIN_PARA_HAS_EXTRA_FIELDS
PSAPI_VERSION=2
WIN32
_SECURE_ATL
WIN32_LEAN_AND_MEAN
NOMINMAX
_UNICODE
UNICODE
NTDDI_VERSION=NTDDI_WIN10_RS2
_WIN32_WINNT=0x0A00
WINVER=0x0A00
DYNAMIC_ANNOTATIONS_ENABLED=1
WTF_USE_DYNAMIC_ANNOTATIONS=1
WEBRTC_ENABLE_PROTOBUF=1
WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE
RTC_ENABLE_VP9
HAVE_SCTP
WEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=0
WEBRTC_WIN
ABSL_ALLOCATOR_NOTHROW=1
HAVE_WEBRTC_VIDEO

设置运行库

在这里插入图片描述选择MTd不用拷贝系统运行期库,但是生成文件会比较大。MDd,生成文件比较小,但是需要拷贝一些系统文件
webrtc debug版本默认的是MTd release版本默认的是MT

设置附加库

我用的是绝对路径,也可以将相关的库文件添加到项目本身目录中,设置相对路径
在这里插入图片描述

添加链接库依赖项

在这里插入图片描述
obj/webrtc.lib
obj/third_party/jsoncpp/jsoncpp/json_reader.obj
obj/third_party/jsoncpp/jsoncpp/json_value.obj
obj/third_party/jsoncpp/jsoncpp/json_writer.obj
obj/test/field_trial/field_trial.obj
obj/rtc_base/rtc_json/json.obj
obj/test/video_test_common/test_video_capturer.obj
obj/test/platform_video_capturer/vcm_capturer.obj
advapi32.lib
comdlg32.lib
dbghelp.lib
dnsapi.lib
gdi32.lib
msimg32.lib
odbc32.lib
odbccp32.lib
oleaut32.lib
shell32.lib
shlwapi.lib
user32.lib
usp10.lib
uuid.lib
version.lib
wininet.lib
winmm.lib
winspool.lib
ws2_32.lib
delayimp.lib
kernel32.lib
ole32.lib
crypt32.lib
iphlpapi.lib
secur32.lib
dmoguids.lib
wmcodecdspuuid.lib
amstrmid.lib
msdmo.lib
strmiids.lib

项目依赖的库主要是在peerconnection_client.ninja文件中查找的
在这里插入图片描述和操作系统本身相关的lib很好确定,主要是和webrtc项目相关的库,一直报各种链接错误,LNK2019啥的,不太好确定是哪些,即便把ninja文件中的出现的所有.lib都添加进去,依然是各种链接错误。这里借鉴了PeerConnectionClientDemo(和这里添加的库又有点不同),添加了几个obj文件。
但是其中有一个vcmCaputurer相关的链接错误搞了很久,就是缺少下面两个obj文件
obj/test/video_test_common/test_video_capturer.obj
obj/test/platform_video_capturer/vcm_capturer.obj
这两个obj是后来我自己加上去的
在这里插入图片描述

四 总结

配置项目环境真的是巨坑,需要耐心。webrtc整个项目虽然是宝藏,但是太大了,对于新手真的很不友好,现在从十几G的大项目中分离出来了peerconnection_client,希望能快速上手吧。
在这里插入图片描述全部生成成功了,还是很爽的。

参考:
1、https://www.jianshu.com/p/351b29e36243
2、https://my.oschina.net/u/4257773/blog/4559837
3、https://blog.csdn.net/CrystalShaw/article/details/108507064

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

webrtc中peerconnection_client生成vs工程文件 的相关文章

随机推荐

  • 计算PI值到一亿位的算法 (转)

    计算PI值到一亿位的算法 转 more 我大体上考虑了一下用Delphi计算PI值到一亿位的算法 得到一个大体的算法 也好用来交流一下 这是一个构造一种新的长四则运算的算法 所谓长四则运算 是指用数据库的字段来作一个小数 用一个记录来作一个
  • 基于python的毕业设计仓库库存管理系统

    更多项目资源 最下方联系我们 目录 Python项目介绍 资料获取 Python项目介绍 计算机毕业设计python毕设项目之python仓库库存管理系统 IT实战课堂 哔哩哔哩 bilibili计算机毕业设计python毕设项目之pyth
  • 微信浏览器清理缓存的方法

    项目场景 项目包含电脑浏览器和手机的微信公众号两个部分 现在需要在微信端对项目进行测试 问题描述 在微信端打开项目的网页 发现某些部分的功能不如预期 退出微信并在服务器端进行修改 修改完成再次打开该网页 跟修改前的表现一样没有任何变化 原因
  • 企业u盘系统服务器,服务器u盘装系统

    服务器u盘装系统 内容精选 换一换 如果Linux操作系统云服务器未安装密码重置插件 可以参见本节内容重新设置密码 本节操作重置的是root用户的密码 您可以重置完root密码后登录云服务器后再更换秘钥或重置非root用户的密码 Windo
  • Group conv vs. Depthwise separable conv

    本王有话说 这俩属于是做轻量化绕不开的经典工作 盘踞武林好多年 我们的目标学会并企图超越它 分组卷积 Group conv paper 原理 分组卷积 即ResNeXt的亮点 受Inception和AlexNet的启发产生 Inceptio
  • 通过css样式定义span标签实现文本输入框功能

    span style width 200px height 24px line height 24px font size 14px padding 5px 8px border 1px solid ddd 我是文本输入框 span
  • TensorFlow学习过程记录 -- 问题解决

    在运行过程中 输出总是会产生两行警告信息 WARNING tensorflow From D python35 lib site packages tensorflow python util tf should use py 118 in
  • 机器学习中概率论知识复习

    机器学习先验知识概率论部分 发现看Machine Learning Andrew Ng 课程的时候中间有推导过程不是很明白 遂针对性复习 知识内容组织结构 参考 Probability Theory Review for Machine L
  • 使用PHP生成Excel文件并通过邮件发送

    需求 每周一自动检测一个月内即将过期的用户 生成excel2007文件 xlsx文件 并发送给指定的人员 做成一个脚本 使用定时任务即可解决 脚本分解为两步 生成Excel 发送邮件 一 生成Excel 使用简单的更改文件头 header
  • Java入门(6)——集合、基本数据类型和引用数据类型的相互转换

    集合 1 HashMap gt 类 概述 通过key可以找到value key就是键 values就是值 俗称键值对 特点 无序的 值可以重复 键不可以重复的 如果重复了 值就会覆盖 回顾 10 int num 10 jack String
  • Python基础内容:适合刚入门的朋友看的教程

    1 基本概念 1 1 四种类型 python中数有四种类型 整数 长整数 浮点数和复数 整数 如 1 长整数 是比较大的整数 浮点数 如 1 23 3E 2 复数 如 1 2 j 1 1 2 2j 1 2 字符串 字符串 字符的序列 pyt
  • ResNet50模型学习笔记

    ResNet的各种网络结构图如下图所示 ResNet的层级结构 Layer gt Block gt Stage gt Network Layer是最小的单位 ResNet50代表有50层 Block由两层或者三层conv层叠加而成 50层以
  • JavaWeb-form传值(从一个jsp页面传数据到另一个jsp页面)

    第一个页面 login jsp
  • OkHttpClient获取文件并下载

    需要调用第三方接口获取文件 本地通过网页直接下载 public Result doExcelExport String repoId HttpServletResponse response try if StringUtils isBla
  • nginx配置指南

    nginx conf配置 找到Nginx的安装目录下的nginx conf文件 该文件负责Nginx的基础功能配置 配置文件概述 Nginx的主配置文件 conf nginx conf 按以下结构组织 配置块 功能描述 全局块 与Nginx
  • 行为型设计模式之策略模式【设计模式系列】

    系列文章目录 C 技能系列 Linux通信架构系列 C 高性能优化编程系列 深入理解软件架构设计系列 高级C 并发线程编程 设计模式系列 期待你的关注哦 现在的一切都是为将来的梦想编织翅膀 让梦想在现实中展翅高飞 Now everythin
  • C++基础---递归函数

    1 递归函数 1 1 递归函数的定义 递归函数 即在函数体中出现调用自身的函数 即函数Func Type a 直接或间接调用函数本身 递归函数 在数学上 关于递归函数的定义如下 对于某一函数f x 其定义域是集合A 那么若对于A集合中的某一
  • centos安装常见软件

    安装tar yum install y tar 安装zip yum install unzip y 安装上传 yum y install lrzsz y 安装git 方式一 yum install git y 方式二 开发会用的软件 yum
  • STM32F1应用DMA——串口收发不定长数据

    STM32F1应用DMA 串口收发不定长数据 使用STM32自带DMA传输数据 可以减轻CPU负担 只需设置一些参数即可发送想要发送的数据 以下是STM32F1系列芯片测试过的部分代码 可实现DMA串口收发数据 下图来自STM32官网的手册
  • webrtc中peerconnection_client生成vs工程文件

    下面是将peerconnection client从整个webrtc工程文件中分离出来的过程记录 一 webrtc项目的本地编译 生成Ninja配置文件 gn gen target x64 args is clang false use l