WebRTC構建(Windows環境)

2021-09-19 22:51:15 字數 2445 閱讀 9081

上文 

增加下列環境變數:

path = %path%:y:\work\webrtc\depot_tools

depot_tools_win_toolchain = 0

gyp_msvs_override_path = c:\program files (x86)\microsoft visual studio\2017\professional

gyp_msvs_version = 2017

windowssdkdir = c:\program files (x86)\windows kits\10

webrtc 預設用clang編譯,但是windows的 clang 環境配置很麻煩,(clang只是乙個編譯前端,並未實現c的標準庫,c的標準庫需要mingw來提供。),若用 clang 方式構建,可參考:

我們用 vs2017 構建,所以 配置 is_clang=false:

gn gen --ide=vs2017 --args="is_clang=false is_debug=false target_cpu=\"x86\"" out\msvc2017-32

gn gen --ide=vs2017 --args="is_clang=false target_cpu=\"x86\" enable_iterator_debugging=true" out\msvc2017-32d

自己的專案用ninja編譯的問題

字符集問題,編譯器警告,警告太多還會導致 ninja 沒有輸出詳細錯誤詳細 

解決: 

忽略該警告 

cflags += [ "/wd4828" ] # charset 

rtti 執行時型別安全問題 

解決: 

增加 rtti 選項 

異常選項 

解決: 

開啟異常 

cflags += [ ""/ehsc" ] # exception throw

configs += [ "//build/config/compiler:rtti" ]

rumtime type 問題 

boost lib 是 dynamic runtime 

webrtc 預設 static runtime 

解決:(臨時方案) 

修改預設 runtime 

參考: 

/md, /mt, /ld (use run-time library) 

diff --git a/config/win/build.gn b/config/win/build.gn 

index 995638a..e5754a9 100644 

--- a/config/win/build.gn 

+++ b/config/win/build.gn 

@@ -442,7 +442,7 @@ config("default_crt") else  

} } 

openssl 實現衝突 

webrtc 用的是 boringssl 

解決: 

boost 使用 boringssl 

websocketcpp 裡面也使用 openssl ,改為 boringssl 有一處問題 

ssl_r_short_read 改為 ssl_r_unexpected_record 

diff --git a/webrtc/netengine/websocketpp/websocketpp/transport/asio/security/tls.hpp b/webrtc/netengine/websocketpp/websocketpp/transport/asio/security/tls.hpp 

index 8434a5c..c30b74d 100644 

--- a/webrtc/netengine/websocketpp/websocketpp/transport/asio/security/tls.hpp 

+++ b/webrtc/netengine/websocketpp/websocketpp/transport/asio/security/tls.hpp 

@@ -307,7 +307,7 @@ protected: 

*/ lib::error_code translate_ec(boost::system::error_code ec) else { 

// we know it is a tls related error, but otherwise don't know 

字符集問題,_t("是是是") 中的字符集是 gbk 

解決: 

轉換字符集 

iconv -f gbk -t utf8

連線錯誤,bad_cast::~bad_cast() 本地匯入 

解決: 

定義_no_exceptions=1,能夠解決問題 

問題好像是 msvcrt.dll 符號名稱錯誤,已經報告問題 

WebRTC介紹和構建

rtcdatachannel 在使用者之間傳輸資料。在firefox,opera以及台式電腦和android上的chrome中。webrtc也可用於ios和android上的本機應用程式。webrtc使用rtcpeerconnection在瀏覽器之間通訊流資料,但還需要一種機制來協調通訊並傳送控制訊...

在Windows下編譯WebRTC

安裝depot tools src third party webrtc resources fetch nohooks webrtc 還可以加 no history gclient sync gn gen out default 執行下面的命令生成vs工程檔案 gn gen ide vs out ...

windows環境下webrtc編譯指導

1 安裝visual studio,注意不同的webrtc的版本,對visual studio的版本要求是不一樣的。檢查路徑 webrtc checkout src build vs toolchain.py 2 安裝depot tools ninja ninja包含在depot tools工具包裡...