求问vs17使用webrtc的编译配置


#1

因为工作原因初次接触webrtc,我在vs17下写了个测试demo,链接源码编译出来的audio_processing.lib 时报错“unresolved external symbol”(排除了路径和库不匹配的情况)
求问这个报错的原因是什么?
(webrtc源码更新时间Date: Tue Apr 23 18:09:05 2019)
以下是项目生成时的输出:

1>Searching libraries
1> Searching E:\depot_tools\webrtc\src\out\Default\obj\modules\audio_processing\audio_processing.lib:

1>Finished searching libraries
1>TestWebrtc.obj : error LNK2019: unresolved external symbol “void * __cdecl webrtc::WebRtcAec_Create(void)” (?WebRtcAec_Create@webrtc@@YAPAXXZ) referenced in function “int __cdecl WebRtcAecTest(void)” (?WebRtcAecTest@@YAHXZ)
1>E:\workspace\TestWebrtc\Debug\TestWebrtc.exe : fatal error LNK1120: 1 unresolved externals

这个输出说明库能访问到,但是在里面找不到相关的接口,我用dumpbin是可以看到库里面的这个接口的:

62F 00000000 UNDEF notype () External | ?WebRtcAec_Create@webrtc@@YAPAXXZ (void * __cdecl webrtc::WebRtcAec_Create(void))

感觉这种情况可能是webrtc的编译有问题:

(我的编译配置:
gn gen out/Default -ide=vs2017 --args=“target_winuwp_version=“8.1” target_cpu=“x86” target_winuwp_family=“desktop” use_rtti=true is_clang=false rtc_build_tools=false rtc_include_tests=false rtc_build_examples=false”)

如果有人成功使用过vs下的对webrtc的调用,希望能在这里分享一下你的配置信息,谢谢。


#2

更新:
我尝试直接链接webrtc.lib,而不是audio_processing.lib,发现能编译通过了。
可能暂时我会先用这个集成了整个webrtc的库(300多M)进行开发,但项目上考虑肯定是希望能够单独使用模块的库,希望有人能分享类似"is_component_build"的配置(这个配置在webrtc上提示是无效的)
后续我也会研究这个模块化编译的问题。


#3

能把工程给我吗,我编译一直提示gn.py: Could not find checkout in any parent of the current path.
This must be run inside a checkout.


#4

项目好大的,你是在哪一步报错的


#5

输入 gn gen out/Default -ide=vs2017,我查了好像是说我的文件不全


#6

是的,应该是没下全,你重新拉下来看看
还有命令要加一个“is_clang=false”,不然vs用不了编译出来的库
gn gen out/Default -ide=vs2017 --args=“is_clang=false”


#7

我是下载webrtc压缩包的 默认名称src-refs_heads_master.tar.gz. git由于墙的问题无法下载。