下載Chromium Embedded Framework (CEF)二進制包,將庫復(fù)制到Engine\Source\ThirdParty\CEF3目錄,并以如下方式命名。
cef_binary_90.6.7+g19ba721+chromium-90.0.4430.212_windows64
將上述目錄中的Debug或Release下所有文件夾復(fù)制到Engine\Binaries\ThirdParty\CEF3\Win64\,如果需要調(diào)試則要將對應(yīng)版本的libcef.dll.pdb拷貝到此文件夾下。
修改\Source\ThirdParty\CEF3\CEF3.build.cs:
public CEF3(ReadOnlyTargetRules Target) : base(Target)
{
/** Mark the current version of the library */
//string CEFVersion = "3.3071.1611.g4a19305";
string CEFVersion = "90.6.7+g19ba721+chromium-90.0.4430.212";
}
編譯libcef_dll_wrapper.lib
編譯UnrealCEFSubProcess,編譯時會出現(xiàn)部分C++文件編譯不過,因為CEF接口類發(fā)生了變化,需要進行修改。
error C3646: “OVERRIDE”: 未知重寫說明符。
解決辦法是:在如下文件添加宏定義:
#define OVERRIDE override
#pragma push_macro("OVERRIDE")
#undef OVERRIDE // cef headers provide their own OVERRIDE macro
THIRD_PARTY_INCLUDES_START
'SendProcessMessage': is not a member of 'CefBrowser'。
解決辦法是:SendProcessMessage從CefBrowser移動到CefFrame,需使用如下代碼:
browser->GetMainFrame()->SendProcessMessage(PID_BROWSER, msg);
OnProcessMessageReceived did not override any base class methods.
解決辦法是:新版本第二個參數(shù)加上了 CefRefPtr<CefFrame> frame
OnRenderThreadCreated was removed from cef。
解決辦法是:remove OnRenderThreadCreated (opens new window),替換為OnBrowserCreated。
如果出現(xiàn)mismatch detected for 'RuntimeLibrary':value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in ...
解決辦法是:回到編譯libcef_dll_wrapper.lib的這個工程中,在右鍵->屬性->C/C++->Code Generation->RuntimeLibrary設(shè)置為/MD。
編譯UE4源碼
編譯UE4源碼遇到的錯誤:
上面進行到最后一步后,要更新UE4的源碼,實在是工作量有點大,這個時候UE5的源碼發(fā)布了,然后就在想能否把UE5的CEF這部分代碼放到UE4中。