最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

MinGW + MSVC + CEF 源代碼編譯 - 3.使用 MSVC 編譯 libcef

2022-07-24 01:22 作者:山路旁的輝翎  | 我要投稿

修改完成,開始編譯 libcef [CEF]。這里使用 MSVC,是因為涉及到了 Chromium 的編譯——如此龐大的項目,對編譯器的要求也是相當嚴格的——更不用說引用的庫文件中還有 ATL / MFC?這兩個*小可愛*。

為了節(jié)約篇幅,所有命令只對部分參數(shù)進行介紹,其他參數(shù)可按提供的方法進行查詢。另多圖警告。

還是下載的步驟,只不過這次是在開發(fā)者命令行中輸入以下內(nèi)容:

GN_DEFINES 可在 https://www.chromium.org/developers/gn-build-configuration/ 查詢,其中 proprietary_codecs=true 和 ffmpeg_branding=Chrome 即為基礎(chǔ)多媒體支持的兩個參數(shù),已經(jīng)可以滿足日常需要了。這里主要參考了 https://blog.csdn.net/whhx2021/article/details/119027875,完善了相關(guān)參數(shù)。

--no-update 和 --no-depot-tools-update 表示不更新 CEF / Chromium / Depot Tools。一方面,這要求之前必須已經(jīng)完成?DEPS 的 gclient sync;但另一方面,這也意味著不需要那啥,好耶

各位在查看 GN_DEFINES?的文檔時,可能注意到了 target_cpu 這一參數(shù)。為什么要 --x64-build 呢?這與 automate-git.py 的判斷邏輯有關(guān):只要不使用 --x64-build 等指定系統(tǒng)架構(gòu)的參數(shù),一律按 x86 處理,這甚至會覆蓋 target_cpu 的設(shè)置。

如果一帆風順,那是再好不過??上В@通常是不可能的。下面是一些常見錯誤及其解決辦法。

  • 提示“'git.bat'?is not recognized as an internal or external command...”:

沒有將 depot_tools 加入 PATH 環(huán)境變量中

建議沒有出錯也)輸入:

  • 提示“FileNotFoundError: [Errno 2] No such file or directory: 'LASTCHANGE'”:

沒有執(zhí)行過 lastchange.py

保證已經(jīng)完成?DEPS 的 gclient sync 情況下,輸入(參 https://magpcss.org/ceforum/viewtopic.php?t=16292):

  • 提示“UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 6: invalid start byte”:

編碼錯誤

建議沒有出錯也)輸入:

  • 提示“Exception: No supported Visual Studio can be found...”:

無法找到 Visual Studio 目錄

來了,重頭戲。使用 Visual Studio 的 BuildTools(MSVC)進行編譯時,一定會遇到這個錯誤。參考 cef\tools\gclient_hook.py 的注釋,這里需要手動指定編譯所使用的工具鏈:

SDK?路徑與之后圖片不同是重裝的結(jié)果(天知道為什么?Installer?和?MSVC?卸載是綁定的),以上路徑按實際修改即可。如果 %GYP_MSVS_OVERRIDE_PATH%\VC\vcvarsall.bat?和?%GYP_MSVS_OVERRIDE_PATH%\VC\Auxiliary\Build\vcvarsall.bat 均不存在,還要指定?INCLUDE / LIB / PATH 環(huán)境變量,詳見注釋。

  • 提示“AssertionError: user32.lib is not found in LIB...”:

SDK 版本混亂

修改?chromium\src\build\toolchain\win\setup_toolchain.py(182 行左右):

setup_toolchain.py

系統(tǒng)安裝的 SDK 版本為 10.0.20348.0,對應(yīng)修改即可。

Python 使用縮進區(qū)分不同代碼塊,因此不要直接復制上方代碼(無縮進)!

折騰了幾個小時后一切順利的話,等待十分鐘左右便會出現(xiàn)以下內(nèi)容:

準備編譯

這意味著成功生成工程文件,準備開始編譯了。所以,猜猜我的工程文件生成了幾次?(血壓逐漸升高)

如果之前?gclient runhooks 沒有出錯,那么下面的內(nèi)容可以直接跳過,否則請接著看下去。

開始編譯后,突然提示“CreateProcess failed...”:

開門紅(?)

或者提示“FileNotFoundError: [WinError 2]...”:

二踢腳(??)

是正常現(xiàn)象,畢竟沒下載完(下載!懂了嗎)。輸入(參 https://magpcss.org/ceforum/viewtopic.php?t=17469):

不要在沙箱中運行(如 Sandboxie),否則處理符號鏈接時會出錯。

接下來就是編譯了,其產(chǎn)生的中間文件大約占用?10?GB。如果出錯了也不用擔心,修正后輸入以下命令就能從剛才的地方繼續(xù)編譯:

其中,“-k N”表示 N 個文件編譯失敗后就停止,默認為 1。

(梅開二度)下面是一些常見錯誤及其解決辦法。

  • 提示“To rebaseline...”:

XFG 機制

按照提示執(zhí)行 copy 命令即可。問題發(fā)生的原因可能與 XFG(eXtended Flow Guard,拓展控制流防護)有關(guān),相關(guān)鏈接如下:

https://docs.microsoft.com/zh-cn/windows/win32/secbp/control-flow-guard

https://www.anquanke.com/post/id/255236

  • 提示“error: use of undeclared identifier 'PROC_THREAD_ATTRIBUTE_COMPONENT_FILTER'”:

我不理解

翻遍 UpdateProcThreadAttribute 的文檔也沒找到這個常量,估計是不支持。打開?chromium\src\sandbox\win\src\startup_information_helper.cc,注釋掉 131 行左右的?if 語句塊不要把 expected_attributes--; 注釋掉,否則處理屬性時會出錯):

startup_information_helper.cc
  • 提示“error: enumeration value 'D3D_FEATURE_LEVEL_12_2' not handled in switch”:

SDK 太新了

D3D_FEATURE_LEVEL_12_2 在 10.0.20170.0 的 SDK 中才添加進來,也就是說在 10.0.19041.0 下編譯不會出現(xiàn)此錯誤。先按下圖修改 chromium\src\gpu\ipc\common\device_perf_info_mojom_traits.cc(37 行左右):

device_perf_info_mojom_traits.cc

接著按下圖修改(79?行左右):

device_perf_info_mojom_traits.cc

最后按下圖修改?chromium\src\gpu\ipc\common\device_perf_info.mojom(19?行左右):

device_perf_info.mojom
  • 提示“error: redefinition of '_DXVA_*_AV1'”:

結(jié)構(gòu)體重定義

打開 chromium\src\media\gpu\windows\d3d11_AV1_accelerator.cc,刪除兩個 #pragma 及之間的所有內(nèi)容。

d3d11_AV1_accelerator.cc
  • 提示“error: enumeration value 'AudioEffectType_FarFieldBeamForming' not handled in switch”:

SDK 太新了 x2

與遠場波束形成有關(guān),估計是新功能。按下圖修改?chromium\src\media\audio\win\audio_low_latency_input_win.cc(195 行左右):

audio_low_latency_input_win.cc

差不多就這些了,其他的隨機應(yīng)變(

看到以下提示,說明編譯完成:

編譯完成

第一條為什么才 27804 呢?是啊,為什么呢(惱)

打開 chromium\src\out\Release_GN_x64\cefclient.exe,開始沖浪測試吧!

播放測試

其實也沒什么可測的,能播放音視頻就是勝利......

現(xiàn)在,簡簡單單打個包:

以上參數(shù)可使用 python chromium\src\cef\tools\make_distrib.py --help 查詢。此命令最好在編譯完成后直接輸入,在新窗口中輸入時需要重新設(shè)置 set CEF_VCVARS=none。

這樣,下載也完成了,編譯也完成了,我們的旅途(大噓)到這里就全部結(jié)束了。還有一件事,清理一下過程中產(chǎn)生的臨時文件。可能產(chǎn)生臨時文件的文件夾有:

  • %ProgramData%\Microsoft?Visual?Studio

  • %AppData%\..\Local

  • %UserProfile%

  • %Temp%

還有一件事,該編譯 libcef_dll_wrapper 了——下次再說!

謝,寫了很久,經(jīng)倒下了orz

MinGW + MSVC + CEF 源代碼編譯 - 3.使用 MSVC 編譯 libcef的評論 (共 條)

分享到微博請遵守國家法律
沁阳市| 理塘县| 忻城县| 海林市| 梅河口市| 怀来县| 崇文区| 新竹市| 西乡县| 大方县| 景洪市| 冷水江市| 北安市| 崇州市| 南通市| 堆龙德庆县| 海林市| 清远市| 化德县| 佛冈县| 黄龙县| 永安市| 楚雄市| 宁波市| 武定县| 武山县| 周宁县| 三亚市| 顺义区| 吉安县| 名山县| 和顺县| 正安县| 盐山县| 聊城市| 南华县| 平武县| 于田县| 读书| 大同市| 逊克县|