把webrtc(Master && M79)的peerconnection/client转换成vs2019工程

把webrtc(Master  && M79)的peerconnection/client转换成vs2019工程

1、用VS2019创建一个空白C++的控制台工程,设置相关的包含目录及库目录

2、设置正确的配置平台:Release X64

3、copy相关的代码到当前工程目录下,添加相关文件到当前工程中,

     修改相关代码中的include头文件:

     “examples/peerconnection/client/xxx.h”修改为当前会目录“xxx.h”

4、C/C++设置预处理器定义

4.1、M79的预处理器定义为:

NDEBUG;WEBRTC_WIN;WIN32_LEAN_AND_MEAN;NOMINMAX;WIN32;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;_ATL_NO_OPENGL;_WINDOWS;CERT_CHAIN_PARA_HAS_EXTRA_FIELDS;PSAPI_VERSION=2;_SECURE_ATL;_USING_V110_SDK71_;WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP;_UNICODE;UNICODE;NTDDI_VERSION=NTDDI_WIN10_RS2;_WIN32_WINNT=0x0A00;WINVER=0x0A00;NVALGRIND;DYNAMIC_ANNOTATIONS_ENABLED=0;WEBRTC_ENABLE_PROTOBUF=1;WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE;RTC_ENABLE_VP9;HAVE_SCTP;WEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=1;ABSL_ALLOCATOR_NOTHROW=1;HAVE_WEBRTC_VIDEO;

4.2、Master的预处理器定义为:

NDEBUG;USE_AURA=1;_HAS_EXCEPTIONS=0;__STD_C;_CRT_RAND_S;_CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_DEPRECATE;_ATL_NO_OPENGL;_WINDOWS;CERT_CHAIN_PARA_HAS_EXTRA_FIELDS;PSAPI_VERSION=2;WIN32;_SECURE_ATL;WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP;WIN32_LEAN_AND_MEAN;NOMINMAX;_UNICODE;UNICODE;NTDDI_VERSION=NTDDI_WIN10_VB;_WIN32_WINNT=0x0A00;WINVER=0x0A00;DYNAMIC_ANNOTATIONS_ENABLED=1;_HAS_ITERATOR_DEBUGGING=0;WEBRTC_ENABLE_PROTOBUF=1;WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE;RTC_ENABLE_VP9;WEBRTC_HAVE_SCTP;WEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=1;WEBRTC_WIN;ABSL_ALLOCATOR_NOTHROW=1;_ENABLE_EXTENDED_ALIGNED_STORAGE;ABSL_FLAGS_STRIP_NAMES=0;HAVE_WEBRTC_VIDEO;

多吧,从peerconnection_client.ninja中copy过来的

 

5、C/C++设置 运行库:

/MT(release) 

 /MTD(debug)

6、链接器-->输入-->附加依赖库为:也是从peerconnection_client.ninja中copy过来的

webrtc.lib;utility.lib;winmm.lib;dbghelp.lib;dnsapi.lib;msimg32.lib;shlwapi.lib;usp10.lib;version.lib;wininet.lib;ws2_32.lib;delayimp.lib;crypt32.lib;iphlpapi.lib;secur32.lib;dmoguids.lib;wmcodecdspuuid.lib;amstrmid.lib;msdmo.lib;strmiids.lib;webrtctest.lib;

其中webrtctest.lib为自定义生成库,主要是webrtc中test工程中的obj和jsoncpp工程中的obj生成(最后再说明一下步骤)

7、链接器-->系统-->子系统:窗口 (/SUBSYSTEM:WINDOWS)

8、编译尝试了,一般都能成功。

9、关于webrtctest.lib为自定义库的生成:

     9.1、从webrtc的out/release/obj/目录下

          copy  ..\release\obj\test\field_trial\field_trial.obj  .
          copy  ..\release\obj\rtc_base\rtc_json\json.obj .
          copy  ..\release\obj\third_party\jsoncpp\jsoncpp\*  .
          copy  ..\release\obj\test\platform_video_capturer\*  .
          copy  ..\release\obj\test\video_test_common\*  .     

     9.2、Master版本需要增加abseil-cpp\absl中的absl库

           copy  ..\release\obj\third_party\abseil-cpp\absl\flags\parse\*  .
           copy  ..\release\obj\third_party\abseil-cpp\absl\flags\commandlineflag\* .
           copy  ..\release\obj\third_party\abseil-cpp\absl\flags\commandlineflag_internal\commandlineflag.obj commandlineflag_internal.obj
           copy  ..\release\obj\third_party\abseil-cpp\absl\flags\reflection\* .
           copy  ..\release\obj\third_party\abseil-cpp\absl\flags\marshalling\* .
           copy  ..\release\obj\third_party\abseil-cpp\absl\flags\flag_internal\flag.obj  flag_internal.obj
           copy  ..\release\obj\third_party\abseil-cpp\absl\flags\flag\*  .
           copy  ..\release\obj\third_party\abseil-cpp\absl\flags\private_handle_accessor\*  .
           copy  ..\release\obj\third_party\abseil-cpp\absl\flags\usage\*  .
           copy  ..\release\obj\third_party\abseil-cpp\absl\flags\usage_internal\usage.obj usage_internal.obj
           copy  ..\release\obj\third_party\abseil-cpp\absl\flags\config\* .
           copy  ..\release\obj\third_party\abseil-cpp\absl\flags\program_name\*  .

    9.3、vs2019环境下生成webTest.lib  

      1)五个目录中的全部obj 拷贝到一个新的目录下,在新的目录下打开cmd(最好是从vs2019的命令行打开)

      2)执行 lib.exe *.obj /out:webrtcTest.lib,生成后拷贝到工程目录下就行。

      3) lib.exe在vs2019的工具包中,所以要用vs2019的命令行,否则可能找不到它。

 

10、如果需要用rtc_use_h264,因需要用到ffmpeg,所以要用clang来编译,那需要增加以下参数:

        rtc_use_h264=true clang_use_chrome_plugins =false is_chrome_branded=true use_custom_libcxx_for_host=false use_custom_libcxx=false 

       其中 use_custom_libcxx_for_host=false use_custom_libcxx=false  这两个参数使我花了很多时间,真坑爹啊。总以为是clang版本的问题。

        gn gen out/Release "--args=is_debug=false rtc_use_h264=true clang_use_chrome_plugins =false is_chrome_branded=true use_custom_libcxx_for_host=false use_custom_libcxx=false " --ide=vs2019

      用的是clang12版本(webrtc自带),最后确定与clang版本无关。

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值