windows下使用visualstudio编译peerconnection_client

  第二章我们把webrtc的头文件和库文件打包好了。那么怎么验证它是对的呢,很简单,我们用它来编译一个客户端程序就知道了。

 

  我一勺三花淡奶(不是)。直接使用官方的examples中的peerconnection_client来测试吧。

  官方用的是gn/ninja/clang。我们要用vs/msbuild/clang。

  (当然,都用了msvc的头文件、库文件和WindowsSDK的头文件库文件)

 

  首先我们的vs要安装clang,用msvc编译器不得行了。

  

  然后创建项目

  

 

  项目创建好后我们把代码和打包好的头文件库文件放进来,并加入到项目中。

  

  

  

  然后为项目配置一些参数。

  

  

  

  

  

 

  这里我稍微解释一下。webrtc官方使用clang编译,并且重写了c++(可能初学者有点奇怪,tmd c++还能重写?没办法,google就是这么刚),这两样我们绕不开,所以对预处理宏和库文件目录有一些特殊处理。

  然后我们把obj和o(.o是汇编生成的)打包成一个webrtc.lib了(webrtc自己打包的不全,那个用不了,它自己都没用),所以就不必如同ninja项目中一样引用obj了。

  不过我这里还需要引用msvcprt.lib(大家可以不引用试试,哈哈),也是没有料到,因为ninja项目中没有用,不知道是不是有坑。

 

  附上peerconnection_client.ninja图片

  (其实万变不离其宗,不管是从autoconf/cmake到meson/gn,从gcc到clang,从mingw到msvc,它总是从一个配置文件生成一个脚本文件,最终调用编译器和链接器)

  (即使如同webrtc这样大型的项目,我们仍可以从最终产物lib/exe/dll和编译器clang-cl/lld-link进行反推,找到所需要的内容)

  

 

  为了方便大家,我把项目发上来了。可以直接下载后编译

  

  最后修改时间 2022-10-02 17:15:04

 

  后来发现理解错了,不用引入msvcprt.lib,而是使用命令行引入libcpmt.lib

  

   解释一下:msvc[m/p]rt.lib是动态链接(最终产物需要依赖vcruntime**.dll),libc[p]mt.lib是静态库,最终不需要依赖dll。

 

  

  (如上图,在编译时也有/MT /MD两个不同参数)

 

  简单来说,如果你希望最终产出一个exe,放到用户电脑上就能用,就用/MT,链接libc[p]mt.lib。当然,/MD也不是一无是处,在大型项目中,各个部门分别负责一个模块,且最终产出的项目文件多,占空间大时,也就不在乎多几个dll了,这时候使用动态链接反而更好。

 

  最后修改时间 2022-10-02 17:51:48

posted @   云中双月  阅读(365)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示