windows下webrtc的編譯 2016(轉)


====================20160124更新=============================

推薦一個翻牆工具,shadowsocks,是需要付費的,一年也才不到100塊,移動端也可以使用,而且不同於goagent這種只能在瀏覽器端使用的工具,它可以提供全局模式的代理,下載webrtc非常方便快速。

在使用gclient sync之前,需要以管理員身份打開一個命令行,設置以下內容

 

set GYP_DEFINES=target_arch=x64
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_MSVS_VERSION=2013
參考的是 這篇文章

分享一個我在2016年1月初下載的源碼,帶vs2013 sln

https://yunpan.cn/cr2RGjuxE4ktX  訪問密碼 9dcd

=============================================================

webrtc工程的最大問題在於需要翻牆從谷歌服務器上下載大量的內容,速度很慢,容易出錯,因此推薦直接從國內網盤下載已編譯或未編譯的版本,這里推薦兩個實驗證明可用的、較新的、已編譯的版本,

下載鏈接:http://pan.baidu.com/s/1mgj1lri

http://yunpan.cn/lk/QaEQc5MJUZncQ (提取碼:a480)  

 

以下的操作說明均基於上述工程,其他版本的流程基本相同。
1、webrtc工程只支持win7 64位或更新版本,不支持32位系統
2、安裝python並將安裝目錄添加到環境變量中
3、安裝windows SDK 8.1,下載 https://developer.microsoft.com/en-us/windows/downloads/windows-8-1-sdk
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庫, 下載 http://www.microsoft.com/en-us/download/confirmation.aspx?id=11800
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) 中定義。

解決辦法:在peerconnection_client項目的鏈接器->命令行中加入:/FORCE:MULTIPLE

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程序的語言->英語

5、無法找到system_wrappers_default.lib文件,到src\build\Debug\lib 目錄下。

解決辦法:把編譯出來的system_wrappers.lib復制一份並改名為 system_wrappers_default.lib



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

另外如果實在想用傳統方法下載webrtc並進行編譯的話,推薦參考這篇文章《WebRTC@第二章@編譯Windows版@V1.0.0

 

原文轉自 http://blog.csdn.net/nonmarking/article/details/46785197


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM