下载Chromium Embedded Framework (CEF)二进制包,将库复制到Engine\Source\ThirdParty\CEF3目录,并以如下方式命名。
cef_binary_90.6.7+g19ba721+chromium-90.0.4430.212_windows64
将上述目录中的Debug或Release下所有文件夹复制到Engine\Binaries\ThirdParty\CEF3\Win64\,如果需要调试则要将对应版本的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,编译时会出现部分C++文件编译不过,因为CEF接口类发生了变化,需要进行修改。
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.
解决办法是:新版本第二个参数加上了 CefRefPtr<CefFrame> frame
OnRenderThreadCreated was removed from cef。
解决办法是:remove OnRenderThreadCreated (opens new window),替换为OnBrowserCreated。
如果出现mismatch detected for 'RuntimeLibrary':value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in ...
解决办法是:回到编译libcef_dll_wrapper.lib的这个工程中,在右键->属性->C/C++->Code Generation->RuntimeLibrary设置为/MD。
编译UE4源码
编译UE4源码遇到的错误:
上面进行到最后一步后,要更新UE4的源码,实在是工作量有点大,这个时候UE5的源码发布了,然后就在想能否把UE5的CEF这部分代码放到UE4中。
联系客服