在音视频领域,想深入研究的话,必定会接触WebRTC。WebRTC是一个庞大的工程,就像是音视频领域的百科全书,音视频采集,编解码,传输,渲染等一条龙在WebRTC里都有,而且WebRTC还有很多先进的音视频处理算法。由于WebRTC代码过于庞大,所以最好单步调试跟踪代码运行,这样才可以更好地学习WebRTC,否则很难有头绪。工欲善其事必先利其器,作为调试神器,宇宙第一IDE Visual Studio必不可少。所以本篇文章主要讲下如何在Windows上编译WebRTC,同时得到VS工程,然后调试。
本文内容截止2020.04.01,最新代码测试编译通过。最新VS2017以上版本编译见文末。
系统要求
- Win7及以上64位系统。
- 内存至少8G,当然越大越好。
- 至少50G磁盘空间(NTFS格式),不能是FAT32,因为会生成大于4G的文件。
Visual Studio安装
WebRTC用到了很多C++最新特性,所以编译最新WebRTC代码VS要求为2017(>=15.7.2) 版本。我用的是VS2017社区版(VS新老版本下载)。VS最好安装在C盘,按默认路径安装,否则可能遇到问题(见问题0x02)。安装VS2017时选择自定义安装,必须勾选如下几项:
- Desktop development with C++组件中10.0.18362或以上的Win10 SDK,后面还要安装调试工具
- Desktop development with C++组件中MFC以及ATL这两项
2020.04.01更新:由于最新WebRTC源码要求10.0.18362及以上Win10 SDK。所以请下载10.0.18362 或以上的Win10 SDK。本文写于2019年,那时VS2019还没发布。由于10.0.18362 Win10 SDK存在于VS2019安装选项中,VS2017安装选项不带有该SDK,所以使用VS2017得从Win10 SDK下载另外下载最新Win10 SDK,或者再装个VS2019选择安装该SDK
安装完VS2017后,必须安装SDK调试工具。打开控制面板->程序与功能,找到刚才安装的最新Windows Software Development Kit,鼠标右键->change。
勾选Debugging Tools For Windows,然后点击change。
depot_tools安装
下载depot_tools然后解压到某个目录,比我的解压到E盘根目录。接着将该depot_tools目录的路径加到系统环境变量Path里,然后把该路径移到最前面(避免已安装的python与git造成影响)。
获取WebRTC源码
由于WebRTC的源码地址被墙了,所以需要通过代理或者vpn才能得到源码。后面都是命令行操作,打开cmd窗口,由于我用的是ss代理,在cmd窗口我按如下设置:
1 2 |
set http_proxy=127.0.0.1:1080 set https_proxy=127.0.0.1:1080 |
设置当前cmd窗口代理上网,如果cmd窗口关闭了重开得重新设置。当然了,也可以设置系统全局代理上网。其他代理方法也类似。如果是VPN之类非代理,就不用这样设置了。
接着执行gclient
命令,安装编译需要用到的一些工具,比如git以及python。
1 |
gclient |
再接着设置一些环境变量,设置下我们的VS安装路径。
1 2 3 4 5 |
set vs2017_install=D:\Program Files (x86)\Microsoft Visual Studio\2017\Community set GYP_MSVS_OVERRIDE_PATH=D:\Program Files (x86)\Microsoft Visual Studio\2017\Community set GYP_GENERATORS=msvs-ninja,ninja # 告诉depot_tools使用我们本机的VS进行编译 set DEPOT_TOOLS_WIN_TOOLCHAIN=0 |
然后cd到要放源码的地方(要遵守前面说的磁盘要求),执行:
1 2 3 4 |
mkdir webrtc-checkout cd webrtc-checkout fetch --nohooks webrtc gclient sync |
这一过程是个漫长的等待,要下的东西将近10G,包括源码以及一些测试的音视频文件资源等,如果因为网络等原因中断了,就再执行gclient sync
。如果这一步一直卡着不动,可以执行ctrl+c
,然后执行gclient sync
。
使用gclient sync可能遇到的问题
问题0x01
1 |
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 1: ordinal not in range(128) |
Unicode字符编码问题,python的一个bug,因为很多人系统语言都是中文的,所以得按如下设置,把系统区域改为英文,然后重启即可。
问题0x02
2019.04.01更新
。去年的版本我编译时没报这个问题,我看到评论里有人提出来了,我下了今天的最新代码,编译时也碰到了,看了下是最新WebRTC windows相关脚本变化导致
报Exception: No supported Visual Studio can be found. Supported versions are: 16.0 (2019), 15.0 (2017)
错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Traceback (most recent call last): File "src/tools/clang/scripts/update.py", line 383, in <module> sys.exit(main()) File "src/tools/clang/scripts/update.py", line 379, in main return UpdatePackage(args.package) File "src/tools/clang/scripts/update.py", line 313, in UpdatePackage CopyDiaDllTo(os.path.join(LLVM_BUILD_DIR, 'bin')) File "src/tools/clang/scripts/update.py", line 247, in CopyDiaDllTo GetWinSDKDir() File "src/tools/clang/scripts/update.py", line 222, in GetWinSDKDir msvs_version = vs_toolchain.GetVisualStudioVersion() File "D:\webrtc-checkout\src\build\vs_toolchain.py", line 165, in GetVisualStudioVersion ' Supported versions are: %s.' % supported_versions_str) Exception: No supported Visual Studio can be found. Supported versions are: 16.0 (2019), 15.0 (2017). Error: Command 'vpython.bat src/tools/clang/scripts/update.py' returned non-zero exit status 1 in D:\webrtc-checkout Hook 'vpython.bat src/tools/clang/scripts/update.py' took 44.30 secs |
解决方法为修改src\build目录下的vs_toolchain.py脚本,加了一行,直接写死我们的VS路径代码:
1 2 3 4 5 6 7 8 9 10 11 12 |
diff --git a/vs_toolchain.py b/vs_toolchain.py index c2ad5c02f..3db2d3c41 100755 --- a/vs_toolchain.py +++ b/vs_toolchain.py @@ -153,6 +153,7 @@ def GetVisualStudioVersion(): for version in supported_versions: for path in ( os.environ.get('vs%s_install' % version), + os.path.expandvars('D:/Program Files (x86)/Microsoft Visual Studio/%s' % version), os.path.expandvars('%ProgramFiles(x86)%' + '/Microsoft Visual Studio/%s' % version)): if path and any(os.path.exists(os.path.join(path, edition)) for edition in |
脚本中的代码默认以C盘处理的,如果我们的VS安装在C盘默认目录就不会报这个错,但我想很多人VS不会装在C盘。
执行:python src/build/vs_toolchain.py get_toolchain_dir
验证修改,控制台打印如下:
1 2 3 4 5 |
vs_path = "D:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community" sdk_path = "C:\\Program Files (x86)\\Windows Kits\\10" vs_version = "2017" wdk_dir = "" runtime_dirs = "C:\\WINDOWS\\System32;C:\\WINDOWS\\SysWOW64;Arm64Unused" |
说明修改成功。接着我们使用gclient sync
会报如下问题:
1 2 3 4 5 6 7 8 9 10 11 |
src/build (ERROR) ---------------------------------------- [0:00:00] Started. [0:00:00] Finished running: git config remote.origin.url [0:00:00] Finished running: git rev-list -n 1 HEAD [0:00:00] Finished running: git rev-parse --abbrev-ref=strict HEAD ---------------------------------------- Error: 3> 3> ____ src\build at 2c249ccb22f58faae38342331925f657a49a9de8 3> You have unstaged changes. 3> Please commit, stash, or reset. |
因为我们修改了脚本,所以执行gclient sync --force
即可。
gclient sync --force
成功结束后,vs_toolchain.py文件会被还原,所以得按前面重新修改vs_toolchain.py。vs_toolchain.py中会优先选择高版本VS编译,由于本文使用VS2017编译,假如我们电脑安装有VS2019,需要按如下修改,把VS2017放前面,避免造成影响。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
diff --git a/vs_toolchain.py b/vs_toolchain.py index c2ad5c02f..9572acd2b 100755 --- a/vs_toolchain.py +++ b/vs_toolchain.py @@ -25,8 +25,8 @@ json_data_file = os.path.join(script_dir, 'win_toolchain.json') # VS versions are listed in descending order of priority (highest first). MSVS_VERSIONS = collections.OrderedDict([ - ('2019', '16.0'), ('2017', '15.0'), + ('2019', '16.0'), ]) # List of preferred VC toolset version based on MSVS |
编译
生成VS2017工程文件:
1 2 |
cd src gn gen --ide=vs out/Default |
可以在src\out\Default\ 下得到 all.sln解决方案文件。
如果不想使用默认编译参数,可以使用
gn args out/Default --list
查看当前编译参数,通过类似如下方式设置:
1 gn gen --ide=vs out/Default --args=“use_rtti=true is_clang=false rtc_build_tools=false rtc_include_tests=false rtc_build_examples=false”
接着执行编译命令:
1 |
ninja -C out/Default |
用VS2017打开:
可以看到众多工程,到此算是完成了。找到我们感兴趣的,就可以用VS单步调试,跟踪代码运行了。这么多宝贝够研究很久了。
代码更新
1 2 3 |
git checkout master git pull origin master gclient sync |
引用WebRTC库
WebRTC编译后会在src\out\Default\obj目录下生成整个WebRTC工程的静态库:webrtc.lib,链接下这个就可以了。
总结
总之WebRTC在Windows上的编译很考验耐心,也很苛刻,需要有个好的访问被墙地址工具。最新VS2019编译可以参考我的这篇文章:
Windows平台WebRTC编译(持续更新),本文也不再更新。
参考
1. WebRTC Native code Development
2. Chromium’s build instructions for Windows
文章评论
博主您好!可否分享编译好的WebRTC Visual Studio工程文件?谢谢!
好的,由于将近10G,我得切割下压缩包上传,请留下你的邮箱地址,我到时给你百度网盘地址。
@Jeff jih488@sina.com 谢谢!
@jih488 博主您好,请问是否方便可以协助我在本地部署编译WebRTC Native的源码?费用多少合适您说话.非常感谢.
@jih488 您好!请教一下,您这个编译后的Lib库,可以用在 VS工程中吗?我自己编译后的WebRTC库(非clang编译的),将peer_connection 做成一个VS工程,然后用WebRTC编译后的库,各种链接问题!不知道您是否注意过,最近的Webrtc(我的是 M77),编译后,很多obj并没有做成库文件(Lib),您是怎么做的呢?
@骆驼刺 非clang编译不清楚,具体一些调用没试过,我不是专业搞windows开发的
@Jeff 博主,给我也发一份吧,谢谢!!!seuwangcheng@163.com
@Jeff 博主也请发我一份吧,非常感谢。1962904662@qq.com
@littlefat_sun 抱歉啊,最好还是自己编译,最新编译的我没上传(太大了),而且在其他人电脑不一定跑得起来。
@Jeff 541717868@qq.com 谢谢 翻墙翻不过去 跪求
@dly_xue 抱歉,我传了你也不能跑起来,好多配置东西跟系统绑死了
@Jeff 你好,博主我想知道你用什么翻墙工具?
我用Br**k上Google还可以,但是下载webrtc就是不行,下载cipd程序都有问题(确定Win10网络有设置代理)
谢谢博主,已收到!
@jih488 ☺
博主,感谢你的分享,网盘地址也发我一份,谢谢。
zero_hot@163.com
博主,请也给我发一份吧,谢谢!2622733392@qq.com
博主求发,跪谢。654125664@qq.com
@昨日围城 感谢博主的博客,感谢博主热情回复。
在折腾了超过100次、将近一周时间之后,我果断放弃了VPN,花钱租了个国外虚拟机,装了Win10 Pro,直接远程桌面操作 -_-!!
但也不是一帆风顺,也遇到上面类似一些问题,最后参考你们无私共享出来的博文,最后编译出来了。
感谢!
(关于使用VPN下载代码,有个问题一直没解决,我相信配置的VPN是没问题,curl访问google.com和facebook都没问题,git可以直接clone到被墙的googlesource代码,但是fetch或gclient老是一开始就有问题,没响应或这超时,想到的各种可能性都试了,一直没解决。这是个遗憾)。
@WebRTC学习者 我也是 你现在解决了吗
博主您好,感谢分享!编译好的WebRTC工程网盘地址能否再共享一下,有劳,灰常感谢! sky_net2006@126.com
给我发一个raoshr@sohu.com,谢谢!
博主求发,跪谢。276315901@qq.com
麻烦博主给我也发一份,搞了一个礼拜,工程都没搭建成功,谢谢啦。327731196@qq.com
@徐对对对 已发
麻烦博主给我也发一份,非常感谢!zjianjunxa@163.com
博主 最近webRtc 编译 运行 遇到一下问题 能不能交流一下 我的邮箱是1242174805@qq.com
博主,劳烦给我发一份。 我的邮箱 gongjiayu516@163.com
劳烦楼主发一份编译好的,邮箱1401014759@qq.com,万分感谢
劳烦楼主也赏我一份编译好的吧,邮箱cskybupt@gmail.com,万分感谢
ss代理是什么意思,shadowsocks?
@zhang 是的
希望楼主也能给我发一份,十分感谢。
@夜孤黎 邮箱zzbljh123@live.com
博主,麻烦你了。
875631121@qq.com
劳烦楼主也赏我一份编译好的吧,邮箱zhangm168@qq.com,万分感谢
辛苦楼主也发我一份吧, 十分感谢。247730002@qq.com
同求一份 shuilan0066@126.com
辛苦楼主也发我一份吧, 十分感谢。1366427360@qq.com
gclient sync 报错
Error: 6>
6> ____ src\third_party at 53c0cac9614f181fd5d3c4c99c413fa966659819
6> You have unstaged changes.
6> Please commit, stash, or reset.
@ziqzhang c:\webrtc-checkout\src>gn gen --ide=vs out/Default
Traceback (most recent call last):
File "c:/webrtc-checkout/src/build/toolchain/win/setup_toolchain.py", line 298, in
main()
File "c:/webrtc-checkout/src/build/toolchain/win/setup_toolchain.py", line 223, in main
env = _LoadToolchainEnv(cpu, win_sdk_path, target_store)
File "c:/webrtc-checkout/src/build/toolchain/win/setup_toolchain.py", line 150, in _LoadToolchainEnv
script_path)
Exception: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community \VC\vcvarsall.bat is missing - make sure VC++ tools are installed.
ERROR at //build/toolchain/win/BUILD.gn:384:24: Script returned non-zero exit code.
win_toolchain_data = exec_script("setup_toolchain.py",
^----------
Current dir: c:/webrtc-checkout/src/out/Default/
Command: C:/zzq/depot_tools/bootstrap-3_8_0_chromium_8_bin/python/bin/python.exe c:/webrtc-checkout/src/build/toolchain/win/setup_toolchain.py "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community " "C:\Program Files (x86)\Windows Kits\10" "C:\WINDOWS\System32;C:\WINDOWS\SysWOW64;Arm64Unused" win x86 environment.x86
Returned 1.
See //build/toolchain/win/BUILD.gn:438:3: whence it was called.
win_toolchains("x86") {
^----------------------
See //BUILD.gn:29:3: which caused the file to be included.
group("default") {
^-----------------
Traceback (most recent call last):
File "c:/webrtc-checkout/src/build/compute_build_timestamp.py", line 127, in
sys.exit(main())
File "c:/webrtc-checkout/src/build/compute_build_timestamp.py", line 113, in main
last_commit_timestamp = int(open(lastchange_file).read())
IOError: [Errno 2] No such file or directory: 'c:\\webrtc-checkout\\src\\build\\util\\LASTCHANGE.committime'
c:\webrtc-checkout\src>
编译的时候报错。博主有遇到过吗?
@ziqzhang ./build/util/lastchange.py build/util/LASTCHANGE
执行这个脚本
@ziqzhang IOError: [Errno 2] No such file or directory: 'c:\\webrtc-checkout\\src\\build\\util\\LASTCHANGE.committime' 一开始报这个错误 后来执行./build/util/lastchange.py build/util/LASTCHANGE解决了。
@ziqzhang Exception: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community \VC\vcvarsall.bat is missing – make sure VC++ tools are installed.
解决方法:set GYP_MSVS_OVERRIDE_PATH=D:\Program Files (x86)\Microsoft Visual Studio\2017\Community
问题分析:你的路径中Community后多了一个空格:2017\Community \VC,所以肯定找不到vcvarsall.bat
@ziqzhang 楼主为什么报这个错误,遇到过吗?
gclient sync 报错
Error: 6>
6> ____ src\third_party at 53c0cac9614f181fd5d3c4c99c413fa966659819
6> You have unstaged changes.
6> Please commit, stash, or reset.
楼主为什么报这个错误,遇到过吗?
@ziqzhang 这里提示有些东西被你改了,叫你reset下
c:\webrtc-checkout\src>ninja -C out/Default
ninja: Entering directory `out/Default'
ninja: error: '../../resources/audio_processing/test/py_quality_assessment/noise_tracks/city.wav', needed by 'py_quality_assessment/noise_tracks/city.wav', missing and no known rule to make it
c:\webrtc-checkout\src>
博主执行这个命令时报这个错误,有遇到过吗?我发现我目录下时C:\webrtc-checkout\src\resources\audio_processing\test\py_quality_assessment\noise_tracks\city.wav.sha1, 你是这个文件吗?
@ziqzhang 是你执行gclient sync没成功,导致city.wav没下载成功
@Jeff c:\webrtc-checkout>gclient sync
Syncing projects: 43% (16/37) src/buildtools/third_party/libunwind/trunk
src/third_party (ERROR)
----------------------------------------
[0:00:00] Started.
[0:00:01] Finished running: git config remote.origin.url
[0:00:01] Finished running: git rev-list -n 1 HEAD
[0:00:01] Finished running: git rev-parse --abbrev-ref=strict HEAD
[0:00:02] Finished running: git rev-parse 53c0cac9614f181fd5d3c4c99c413fa966659819
----------------------------------------
Error: 6>
6> ____ src\third_party at 53c0cac9614f181fd5d3c4c99c413fa966659819
6> You have unstaged changes.
6> Please commit, stash, or reset.
c:\webrtc-checkout>cd src\third_party
c:\webrtc-checkout\src\third_party>git reset
Unstaged changes after reset:
D blink/web_tests/images/resources/missing-plte-before-trns.png
好像实没有这个png 文件,但我们按照步骤做的,没做任务删除操作,你又这个文件吗?
@ziqzhang 这个文件我有的
@Jeff 能发我一下吗zzqgtt@163.com 我发现了扫描软件把他当作病毒直接删除了,都不征求意见的。
楼主您好,也请转发我一份,邮箱地址2859662089@qq.com,万分感谢!
博主你好,能麻烦您将网盘地址也发给我一份吗,邮箱skychase_leo@163.com,万分感谢
博主你好,安装你的流程我安装了vs2017 V15.9及其他软件,但是执行gn gen --ide=vs out/Default,却报错误Exception: No supported Visual Studio can be found. Supported versions are: 16.0 (2019), 15.0 (2017).
备注:我尝试安装了vs2019 V16.4 VS201715.0等版本都出现以下错误,请求指点,谢谢
F:\webrtc-checkout\src>gn gen --ide=vs out/Default
Traceback (most recent call last):
File "F:/webrtc-checkout/src/build/vs_toolchain.py", line 561, in
sys.exit(main())
File "F:/webrtc-checkout/src/build/vs_toolchain.py", line 557, in main
return commands[sys.argv[1]](*sys.argv[2:])
File "F:/webrtc-checkout/src/build/vs_toolchain.py", line 543, in GetToolchainDir
ToGNString(win_sdk_dir), ToGNString(GetVisualStudioVersion()),
File "F:/webrtc-checkout/src/build/vs_toolchain.py", line 165, in GetVisualStudioVersion
' Supported versions are: %s.' % supported_versions_str)
Exception: No supported Visual Studio can be found. Supported versions are: 16.0 (2019), 15.0 (2017).
ERROR at //build/config/win/visual_studio_version.gni:28:7: Script returned non-zero exit code.
exec_script("../../vs_toolchain.py", [ "get_toolchain_dir" ], "scope")
^----------
Current dir: F:/webrtc-checkout/src/out/Default/
Command: F:/depot_tools/bootstrap-3_8_0_chromium_8_bin/python/bin/python.exe F:/webrtc-checkout/src/build/vs_toolchain.py get_toolchain_dir
Returned 1.
See //build/toolchain/win/BUILD.gn:8:1: whence it was imported.
import("//build/config/win/visual_studio_version.gni")
^----------------------------------------------------
See //BUILD.gn:29:3: which caused the file to be included.
group("default") {
^------------------
F:\webrtc-checkout\src>
@xiaoseyihe set GYP_MSVS_VERSION=2017
set GYP_MSVS_OVERRIDE_PATH=D:\Program Files (x86)\Microsoft Visual Studio\2017\Community
set GYP_GENERATORS=msvs-ninja,ninja
@Jeff 问题解决方法更新了,见文中问题0x02描述:修改vs_toolchain.py
一年前的编译文章了,以前传网盘的也很久没更新了,也暂时别问我要了。
博主好,我下了8G多,现在卡在这个地方一晚上没动过,一直在重复的输出这个,也没报错。代理连接是正常的,可能是什么原因呢
Still working on:
src/base
src/testing
src/third_party/libjpeg_turbo
src/third_party/libyuv
@John 你crtl+c断开重新执行:gclient sync看下,看起来还是网络问题。
@Jeff 确实是这样的,已经编译好了。我才刚入门,有些问题希望博主指点一下。编译的目的是为了什么,得到.lib?还是方便调试?src/out生成了那么多工程该如何调试,我用到的是audio_processing,我打开项目感觉只是提供了接口,并不能调试运行,更不知道如果去调用,这应该涉及到头文件包含、链接库等。应该从哪里入手呢
@John 1)编译目的是为了方便利用VS IDE工具单步调试,让程序跑起来,更好阅读内部代码流程,否则代码那么多,你也不一定看出内部代码如何运行;
2)如何调试:打开工程中的example目录,运行一个peeconnection_server,两个peerconnection_client,让两个peerconnection_client进行语音视频通信,然后在peerconnection_client中找到你感兴趣的(例如audio_processing)加断点单步调试,了解具体流程;
3)基本每个模块都有单元测试代码,你可以看下test代码,看看人家怎么用的。
博主你好 为什么我cmd窗口输入gclient没有任何反应?
@dsfa ctrl+c,重新执行看下,是不是网络没设置好
@Jeff 返回CIPD client self-update failed, trying to bootstrap it from scratch...
@dsfa 你的代理有问题
@Jeff 我用的VPN,可以访问外网,就是执行gclient的时候没有用
@Jeff 编出来了 确实是vpn设置的问题
请问博主,有什么软件翻墙的?
我在PowerShell,http/https代理设置好了,可以访问google;git代理也设置好了,可以下载chromium.googlesource.com的代码;
但是!但是!我尝试下载webrtc代码,执行gclient就什么动静也没了,
我自己装的Python27,在PowerShell试过是可以的。
为什么执行gclient就没任何动静?
@WebRTC学习者 用cmd命令行试下,不用powershell,
下载iOS ,编译 支持h264
gn gen out/ios_release --args='target_os="ios" target_cpu="arm64" is_debug=false proprietary_codecs=true rtc_use_h264=true rtc_include_tests=false' --ide=Xcode
nijia -C out/ios_release
编译不过去。
fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file list file: obj/third_party/ffmpeg/libffmpeg_internal.a.rsp is empty
这问题谁知道呀?
@webrtc_学习中 解决了么?我也遇到了打算换掉他自带的ffmpeg试试
初识webrtc,博主求求也给我发一份
以peerconnection_client.exe为例,无论怎么设置编译参数,debug版本 在Visual Studio 2017或2019 都不能正常运行。
@只想知道VS的debug版怎么编译 是peerconnection_client.exe主动呼叫另一个client崩溃吗?
如果是这个的话,考虑切换到m74分支上编译,我编了开发流以及m79,m78,m77,m76,m75这几个分支,都会崩溃。
看代码似乎是启动摄像头时,崩的
@只想知道VS的debug版怎么编译 报什么错误?
@Jeff debug下,出现unable to start program. Operation not supported. unknown error:0x800700d8
@webrtc初学 这个问题不是很清楚。。。
博主,我想问一下,是不是获取源码的那一行命令:fetch webrtc 如果由于网络原因中断的话,是要重新fetch,还是可以通过gclient sync继续下载
@help <code>gclient sync</code>即可
楼主,有没有在windows上基于webrtc做过开发啊?
@webrtc初学 我只做跨平台SDK开发,windows sdk倒是写过,应用层那些界面之类开发没有
要不把编译好的工程发我把zzqgtt@163.com 谢谢
@Jeff 博主也请您发我一份编译好的WebRTC Visual Studio工程吧,非常感谢!
qjcnqtok@126.com
楼主您好,我在执行 ninja -C out/Default这个编译命令的时候 报这种错误会是什么原因导致的呢
In file included from ../../call/fake_network_pipe_unittest.cc:19:
In file included from ../..\test/gmock.h:17:
In file included from ../..\testing/gmock/include/gmock/gmock.h:10:
In file included from ../..\third_party/googletest/src/googlemock/include/gmock/gmock.h:61:
In file included from ../../third_party/googletest/src/googlemock/include\gmock/gmock-function-mocker.h:4:
In file included from ../../third_party/googletest/src/googlemock/include\gmock/gmock-generated-function-mockers.h:47:
../../third_party/googletest/src/googlemock/include\gmock/gmock-spec-builders.h(1600,12): error: call to implicitly-deleted copy constructor of 'MockSpec<testing::internal::FunctionMocker<webrtc::PacketReceiver::DeliveryStatus (webrtc::MediaType, rtc::CopyOnWriteBuffer, long long)>::F>' (aka 'MockSpec<webrtc::PacketReceiver::DeliveryStatus (webrtc::MediaType, rtc::CopyOnWriteBuffer, long long)>')
return MockSpec<F>(this, ::std::make_tuple(std::move(m)...));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../call/fake_network_pipe_unittest.cc(28,3): note: in instantiation of member function 'testing::internal::FunctionMocker<webrtc::PacketReceiver::DeliveryStatus (webrtc::MediaType, rtc::CopyOnWriteBuffer, long long)>::With' requested here
MOCK_METHOD3(DeliverPacket,
^
../../third_party/googletest/src/googlemock/include\gmock/gmock-generated-function-mockers.h(602,30): note: expanded from macro 'MOCK_METHOD3'
#define MOCK_METHOD3(m, ...) GMOCK_METHOD3_(, , , m, __VA_ARGS__)
^
../../third_party/googletest/src/googlemock/include\gmock/gmock-generated-function-mockers.h(237,48): note: expanded from macro 'GMOCK_METHOD3_'
return GMOCK_MOCKER_(3, constness, Method).With(gmock_a1, gmock_a2, \
^
../../third_party/googletest/src/googlemock/include\gmock/gmock-spec-builders.h(1292,24): note: copy constructor of 'MockSpec<webrtc::PacketReceiver::DeliveryStatus (webrtc::MediaType, rtc::CopyOnWriteBuffer, long long)>' is implicitly deleted because field 'matchers_' has a deleted copy constructor
ArgumentMatcherTuple matchers_;
^
..\..\..\..\..\..\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\include\tuple(351,5): note: copy constructor is implicitly deleted because 'tuple<testing::Matcher<webrtc::MediaType>, testing::Matcher<rtc::CopyOnWriteBuffer>, testing::Matcher<long long> >' has a user-declared move constructor
tuple(tuple&&) = default;
^
您好,博主,请问您有遇到webrtc.lib 编译后使用的时候回爆找不到符号
错误 LNK2001 无法解析的外部符号 "void (__cdecl* std::__1::__libcpp_debug_function)(struct std::__1::__libcpp_debug_info const &)" (?__libcpp_debug_function@__1@std@@3P6AXAEBU__libcpp_debug_info@12@@ZEA) webrtc_demo C:\work\Dev\demo\webrtc_demo\webrtc.lib(thread.obj) 1
@xuchen
gn gen --ide=vs out/Default --args="is_clang=false use_lld=false"
禁用clang与lld看下@Jeff 感谢楼主,现在可以,其中原因还不太了解 ,还要再看看
您好博主, 我按照您的方法已经成功编译出来了webrtc库, 但是默认的编译环境只有一个GN而且用的均是release环境。
请问有方法可以使生成出来的sln ,可以将代码环境分为debug/release 吗, 然后手动通过VS编译这两个版本?
楼主,能不能出一期qt上使用webrtc库的教程