我使用VS2015編譯WebRTC經驗總結

2021-09-20 14:52:12 字數 3290 閱讀 3869

編譯最新版webrtc原始碼和編譯好的整個專案10多個g【分享】 - 每一天都有新的希望 - csdn部落格

windows下webrtc的編譯 2016 - 張暉的專欄 - csdn部落格

環境準備(按照參考資料)

a. 系統locale最好設定成english,就是控制面板裡面的region  (解決編譯時object 警告視為錯誤問題,我這裡沒有設定這個)

控制面板-> 時鐘、語言和區域->更改位置->管理->更改系統區域設定 

選擇英語美國 重啟 

b. 安裝visual studio 2015 update 3 版本。(要求vs 2015 update 2以上版本)

c. 配置depot_tools工具

計算機屬性->高階系統設定->高階->環境變數->系統變數->開啟path,最前邊增加 e:\depot_tools; 

4.檢視是否成功 

在命令列中輸出gclient ,檢視是否配置成功 

編譯除錯

1.windows 生成vs專案檔案 

cmd進入原始碼目錄:

使用vs2015開啟all.sln進行編譯。

還有就是官方建議的命令: 

ninja -c out/debug -> 編譯debug版

ninja -c out/release -> 編譯release版

編譯注意:我家裡的電腦直接使用vs2015開啟all.sln編譯,經常提示msbuild.exe已停止工作,無法正常編譯完成。

我的解決辦法是:先使用ninja -c out/debug編譯完成,然後在使用vs2015開啟all.sln進行**除錯(進行少量**修改使用vs編譯沒問題)。

其他可能遇到的問題:

以下的操作說明均基於上述工程,其他版本的流程基本相同。

1、webrtc工程只支援win7 64位或更新版本,不支援32位系統

2、安裝python並將安裝目錄新增到環境變數中

3、安裝windows sdk 8.1

4、安裝visual studio 2013 update 4 community或professtional版本,確保安裝了mfc模組,不支援visual studio express版本

5、安裝directx sdk june 2010,安裝完成後可能會報錯,錯誤**「s1023」,這是因為與系統已有的visual c++ redistributable packages版本衝突,不用管它,直接退出安裝程式即可。這裡我們需要的只是安裝目錄下的標頭檔案和庫。

6、安裝winddk即驅動程式工具包,這裡我們需要的主要是path\winddk\7600.16385.1\lib\atl\amd64下的atlthunk.lib庫

7、更改系統區域設定,在控制面板中找到區域和語言->管理->非unicode程式的語言->英語

8、至此,所有的準備工作都已完成,可以開啟工程目錄下的all.sln進行編譯了。

一般這時還會報如下錯誤:

1、警告被視為錯誤 - 沒有生成「object」檔案。

解決辦法:改變專案的屬性,把否警告被視為錯誤設為 「否(/wx-)」,有很多個工程需要設定

2、無法解析的外部符號 _intel_aes_encrypt_init_128,該符號在函式 _aes_initcontext 中被引用。

解決辦法:把nss_static專案預處理器定義中的use_hw_aes和intel_gcm去掉

3、error lnk2005: "class atl::catlwinmodule atl::_atlwinmodule" (?_atlwinmodule@atl@@3vcatlwinmodule@1@a) 已經在 libjingle_media.lib(win32devicemanager.obj) 中定義。

4、error msb3721: 命令「call python "..\..\tools\swarming_client\isolate.py" "check" "--result" "..\..\build\debug\common_audio_unittests.isolated" "--isolate" "common_audio_unittests.isolate" "--path-variable" "depth" "..\.." "--path-variable" "product_dir" "..\..\build\debug\ " "--config-variable" "os=win" "--config-variable" "chromeos=0" "--config-variable" "component=static_library" "--config-variable" "internal_gles2_conform_tests=0" "--config-variable" "icu_use_data_file_flag=1" "--config-variable" "use_openssl=0"」已退出,返回**為 1。

解決辦法:如前所述,在控制面板中找到區域和語音->管理->非unicode程式的語言->英語

注意:工程中除了webrtc的核心**外,還包含有大量的示例工程,所以若在直接全部編譯時出現大量的重複錯誤,又不想乙個乙個地全部修正的話,可以找準需要的專案單獨編譯,單獨修改。還有的時候,可能會在編譯時發現很多任務程都缺少同乙個庫,這樣的話如果乙個乙個給這些工程新增這些庫又很麻煩,可以右鍵工程-屬性-配置屬性-c/c++-附加包含目錄或聯結器-常規-附加庫目錄,webrtc中所有工程幾乎都會有相同的附加包含目錄,於是可以將缺失的庫直接放入這樣的附加包含目錄中,再次編譯時就會自動去這些目錄下尋找相應檔案了。

關於使用VS2015靜態編譯

首先必須搞清楚專案 專案屬性 配置屬性 c c 生成 執行庫中四個選項的關係 多執行緒除錯dll mdd 對應 md dynamicdebug 多執行緒dll md 對應 md dynamicrelease 多執行緒 mt 對應 md staticrelease 多執行緒 mtd 對應 md sta...

VS2015靜態編譯設定

首先必須搞清楚專案 專案屬性 配置屬性 c c 生成 執行庫中四個選項的關係 多執行緒除錯dll mdd 對應 md dynamicdebug 多執行緒dll md 對應 md dynamicrelease 多執行緒 mt 對應 md staticrelease 多執行緒 mtd 對應 md sta...

vs2015編譯dlib,測試

dlib vs2015編譯 測試 使用cmake生成文件 使用vs2015編譯,成功,靜態庫 使用demo測試 include stdafx.h include dlib image processing frontal face detector.h include dlib image io.h...