国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
CEF一些基本知識(shí)

一.CEF簡(jiǎn)介

Chromium Embedded Framework (CEF)是個(gè)基于Google Chromium項(xiàng)目的開(kāi)源Web browser控件,支持Windows, Linux, Mac平臺(tái)。

簡(jiǎn)單說(shuō)就是Chrome的開(kāi)源版,目前很多所謂的雙核瀏覽器,實(shí)質(zhì)就是chrome+IE的雙核?;贖TML5的支持,以及v8引擎的效率,在軟

件中嵌入chromium是個(gè)不錯(cuò)的選擇,而且目前市面上應(yīng)用及其廣泛,如:tx系軟件。spy++一抓就知道了,如下圖


二.cef下載

http://opensource.spotify.com/cefbuilds/index.html下載速度是不快,但總算下載下來(lái)了,由于本人是vs2013,遇到的坑就是3.3以上的版本至少要vs2015以上才

能編譯,總之搞了很久最后下了一個(gè)3.27版本才成功,提示:如果不打算放棄32位就建議下載32位版本吧,不然64位軟件在32位系統(tǒng)是跑不起來(lái)的。

由于新下載的標(biāo)準(zhǔn)開(kāi)發(fā)包解壓就是如下圖了,


文件目錄結(jié)構(gòu)在此做下說(shuō)明,很是重要。筆者在此花費(fèi)了很多時(shí)間。

1.首先建議先閱讀Readme.txt,該文件對(duì)項(xiàng)目結(jié)構(gòu)做了簡(jiǎn)要說(shuō)明。當(dāng)然看一遍肯定不可能完全理解。但隨著對(duì)項(xiàng)目的熟悉了解,

發(fā)現(xiàn)該文件說(shuō)的還是挺清晰的。

2.licence.txt沒(méi)啥說(shuō)的,就是關(guān)于版權(quán)的說(shuō)明。

幾個(gè)gyp/gypi文件是不能手動(dòng)修改的,是GYP(Generate Your Projects)工具自動(dòng)生成的相當(dāng)于工程配置文件。插入一段GYP說(shuō)明:

[plain]
  1. GYP結(jié)構(gòu)  

  2. GYP的輸入是.gyp和.gypi文件,.gypi文件是用于.gyp文件include使用的。.gyp文件就是符合特定格式的json文件。  

  3. gyp文件中包含target,Visual C++下,gyp生成sln,target生成vcproj或vxcproj。  

  4. chromium中GYP結(jié)構(gòu)是,通過(guò)命令行統(tǒng)一使用build/common.gypi的公共文件,工程的配置,選項(xiàng)的處理,編譯選項(xiàng)的使用,都是在這個(gè)文件中配置。  

GYP結(jié)構(gòu)GYP的輸入是.gyp和.gypi文件,.gypi文件是用于.gyp文件include使用的。.gyp文件就是符合特定格式的json文件。gyp文件中包含target,Visual C++下,gyp生成sln,target生成vcproj或vxcproj。chromium中GYP結(jié)構(gòu)是,通過(guò)命令行統(tǒng)一使用build/common.gypi的公共文件,工程的配置,選項(xiàng)的處理,編譯選項(xiàng)的使用,都是在這個(gè)文件中配置。
[plain]
  1. 生成一個(gè)總工程all.gyp,這個(gè)工程依賴(lài)于其他所有的工程,這個(gè)工程生成,所有工程都生成完成。而且有一個(gè)總工程也方便開(kāi)發(fā)。  

  2. 如果要使用GYP,建議依照chromium的結(jié)構(gòu),common.gypi也用chromium的進(jìn)行裁剪,畢竟各種選項(xiàng)的選擇也是需要經(jīng)驗(yàn)的。  

生成一個(gè)總工程all.gyp,這個(gè)工程依賴(lài)于其他所有的工程,這個(gè)工程生成,所有工程都生成完成。而且有一個(gè)總工程也方便開(kāi)發(fā)。如果要使用GYP,建議依照chromium的結(jié)構(gòu),common.gypi也用chromium的進(jìn)行裁剪,畢竟各種選項(xiàng)的選擇也是需要經(jīng)驗(yàn)的。
[plain]
  1. 使用GYP  

  2. chromium工程中的方法是使用build/gyp_chromium這個(gè)Python腳本來(lái)調(diào)用,這個(gè)腳本實(shí)現(xiàn)添加公共配置,偵測(cè)附加配置,添加需要的編譯選項(xiàng)。  

使用GYPchromium工程中的方法是使用build/gyp_chromium這個(gè)Python腳本來(lái)調(diào)用,這個(gè)腳本實(shí)現(xiàn)添加公共配置,偵測(cè)附加配置,添加需要的編譯選項(xiàng)。

3.然后就是介紹CMakeList.txt文件了,該文件非常重要。這里要引入CMake的一些知識(shí),下載地址:

CMake下載地址

CMake是一個(gè)跨平臺(tái)的安裝(編譯)工具,可以用簡(jiǎn)單的語(yǔ)句來(lái)描述所有平臺(tái)的安裝(目前很多開(kāi)源跨平臺(tái)庫(kù)都使用此方式如:ProtoBuf,cef)。

CMake腳本本文不做介紹,由于當(dāng)前用的win平臺(tái)所以直接下載免安裝版解壓運(yùn)行cmake-gui.exe,(說(shuō)句廢話,這是一個(gè)qt程序,

跨平臺(tái)還是選擇了qt,呵呵)。


需要注意的就是源代碼目錄和生成工程文件的目錄了,configue沒(méi)錯(cuò)誤就Generate生成相應(yīng)vs版本工程文件,然后OpenProject,

正常情況就是所有的項(xiàng)目(包括庫(kù)和測(cè)試程序)都包含在這個(gè)工程中。

libcef_dll_wrapper會(huì)生成一個(gè)庫(kù),cefclient和cefsimple則會(huì)生成測(cè)試程序,對(duì)應(yīng)下面兩張圖。


4.文件夾介紹

(1)cmake,該文件夾包含Cmake的一些宏定義,配置信息。

(2)include,使用該庫(kù)的所有頭文件

(3)libcef_dll,庫(kù)的源代碼

(4)tests,測(cè)試程序demo源代碼

(5)Resource,資源文件

該資源文件是程序運(yùn)行需要依賴(lài)的資源文件,含語(yǔ)言包,unicode支持等

(6)Debug/Release,程序依賴(lài)的動(dòng)態(tài)庫(kù)/靜態(tài)庫(kù)。但不包括C++庫(kù):libcef_dll_wrapper.lib。

1、必須文件,缺少任意一個(gè)CEF將無(wú)法運(yùn)行:
libcef.dll
    這個(gè)不用多說(shuō),CEF的核心庫(kù)文件,js引擎、網(wǎng)頁(yè)加載渲染邏輯等都在其中,也是size最大的一個(gè)文件(Release版將近50M,Debug版超過(guò)500M)。
icudtl.dat 
    用來(lái)支持unicode,缺少這些文件雖然編譯能通過(guò),但是執(zhí)行CefInitialize();的時(shí)候就會(huì)崩潰,在這個(gè)坑趴了很久還以為是代碼問(wèn)題。
natives_blob.bin
snapshot_blob.bin

    V8引擎快照數(shù)據(jù)。
2、可選文件:
locales/
    該目錄包含CEF,Chromium和Blink使用的本地化資源。 CefSettings.locale指定需要加載的.pak文件。 只需要發(fā)布配置的區(qū)域?qū)?yīng)的.pak文件。

如果沒(méi)有區(qū)域設(shè)置將配置默認(rèn)語(yǔ)言環(huán)境“en-US”。如果沒(méi)有這些文件任意Web組件可能顯示不正確。
cef.pak
cef_100_percent.pak
cef_200_percent.pak

    這些文件包含了供CEF使用的區(qū)域無(wú)關(guān)資源,缺少這些文件任意Web組件可能顯示不正確。(筆者當(dāng)時(shí)缺少cef_100_percent.pak,

cef_200_percent.pak兩文件,導(dǎo)致視頻控件不顯示音量和最大化按鈕)。
cef_extensions.pak
    此文件包含擴(kuò)展加載所需的非本地化資源傳遞`–disable-extensions`命令行標(biāo)志來(lái)禁止使用文件。沒(méi)有這個(gè)文件,依賴(lài)于擴(kuò)展系統(tǒng)的組件將不起作用,

如PDF查看器。
devtools_resources.pak
    此文件包含Chrome開(kāi)發(fā)者工具所需的非本地化資源,缺少這個(gè)文件,Chrome開(kāi)發(fā)者工具將無(wú)法運(yùn)行。
d3dcompiler_43.dll (Windows XP需要該文件)
d3dcompiler_47.dll (Windows Vista和更高版本的系統(tǒng)需要該文件)
libEGL.dll
libGLESv2.dll

    Direct3D支持文件,如果缺少這些文件,HTML5在渲染2D畫(huà)布,3D CSS,WebGL時(shí)將不起作用。
wow_helper.exe
    用來(lái)支持Windows Vista 64位沙箱。如果沒(méi)有這個(gè)文件,32位的CEF將無(wú)法在開(kāi)啟了沙箱的64位的Vista機(jī)器上運(yùn)行。

英文原文

附MFC使用CEF3簡(jiǎn)單Demo代碼

[cpp]
  1. BOOL CMFCDlgCefTestDlg::OnInitDialog()  

  2. {  

  3.     CDialogEx::OnInitDialog();  

  4.     // TODO:  在此添加額外的初始化代碼  

  5.     CefRefPtr<CSimpleClient> client(new CSimpleClient());  

  6.     m_simpleClient = client;  

  7.     CefSettings settings;  

  8.     CefSettingsTraits::init(&settings);  

  9.     settings.multi_threaded_message_loop = true;  

  10.     CefMainArgs mainArgs;  

  11.     CefRefPtr<CefApp> cefApp;  

  12.     CefInitialize(mainArgs, settings, cefApp, NULL);  

  13.     RECT rect;  

  14.     GetClientRect(&rect);  

  15.     RECT rectnew = rect;  

  16.     CefWindowInfo winInfo;  

  17.     winInfo.SetAsChild(GetSafeHwnd(), rectnew);  

  18.     CefBrowserSettings browserSettings;  

  19.     CefBrowserHost::CreateBrowser(winInfo, client, _T(”http://www.lofter.com”), browserSettings, NULL);  

  20.     return TRUE;  // 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRUE  

  21. }  

BOOL CMFCDlgCefTestDlg::OnInitDialog(){    CDialogEx::OnInitDialog();    // TODO:  在此添加額外的初始化代碼    CefRefPtr<CSimpleClient> client(new CSimpleClient());    m_simpleClient = client;    CefSettings settings;    CefSettingsTraits::init(&settings);    settings.multi_threaded_message_loop = true;    CefMainArgs mainArgs;    CefRefPtr<CefApp> cefApp;    CefInitialize(mainArgs, settings, cefApp, NULL);    RECT rect;    GetClientRect(&rect);    RECT rectnew = rect;    CefWindowInfo winInfo;    winInfo.SetAsChild(GetSafeHwnd(), rectnew);    CefBrowserSettings browserSettings;    CefBrowserHost::CreateBrowser(winInfo, client, _T("http://www.lofter.com"), browserSettings, NULL);    return TRUE;  // 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRUE}
[cpp]
  1. void CMFCDlgCefTestDlg::OnClose()  

  2. {  

  3. <span style=”white-space:pre;”> </span>// TODO:  在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值  

  4. <span style=”white-space:pre;”> </span>m_simpleClient->Release();  

  5. <span style=”white-space:pre;”> </span>CefShutdown();<span style=“color:#ff0000;”>//其實(shí)這行代碼如果沒(méi)有設(shè)置cefApp的話,是會(huì)崩潰的,測(cè)試完全可以注釋。但切記,該函數(shù)只能在主線程中調(diào)用。后續(xù)深入學(xué)習(xí)后,還需解一下惑</span>  

  6. <span style=”white-space:pre;”> </span>CDialogEx::OnClose();  

  7. }  

void CMFCDlgCefTestDlg::OnClose(){ // TODO:  在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值 m_simpleClient->Release(); CefShutdown();//其實(shí)這行代碼如果沒(méi)有設(shè)置cefApp的話,是會(huì)崩潰的,測(cè)試完全可以注釋。但切記,該函數(shù)只能在主線程中調(diào)用。后續(xù)深入學(xué)習(xí)后,還需解一下惑 CDialogEx::OnClose();}
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
chromium構(gòu)建系統(tǒng)
MFC內(nèi)嵌cef3瀏覽器內(nèi)核
使用CefSharp 在C#用戶控件中嵌入Chrome瀏覽器使用方法
基于.net開(kāi)發(fā)chrome核心瀏覽器【七】
UE4問(wèn)題升級(jí)WebBrowser內(nèi)核
VS2010 Chromium編譯
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服