上文
增加下列環境變數:
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工具包裡...