Ue4升级chrome内核

1、下载Chromium Embedded Framework (CEF)二进制包

选择windows 64bit:https://cef-builds.spotifycdn.com/index.html#windows64

下载后将库复制到\Source\ThirdParty\CEF3目录,并按如下方式改名

cef_binary_89.0.17.ge7bbb1d_windows64

并将Debug或Release下所有文件(.dll、.bin)级文件夹复制到Engine\ThirdParty\CEF3\Win64\,如果需要调试则要将下载的匹配版本的libcef.dll.pdb拷贝到此文件夹下。

2、修改\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 = "89.0.17.ge7bbb1d";

3、编译libcef_dll_wrapper.lib

1)修改\Source\ThirdParty\CEF3\cef_binary_89.0.17.ge7bbb1d_windows64\libcef_dll\目录下的CMakeLists.txt文件,在顶部加上cmake_minimum_required(VERSION 3.2)

2)启动shell,在刚才的目录下运行cmake -G "Visual Studio 16"

如果出现错误

CMake Error at CMakeLists.txt:752 (SET_LIBRARY_TARGET_PROPERTIES):
  Unknown CMake command "SET_LIBRARY_TARGET_PROPERTIES".

注释SET_LIBRARY_TARGET_PROPERTIES为:

#SET_LIBRARY_TARGET_PROPERTIES,成功后在libcef_dll目录下会生成Project.sln,用vs2019打开编译,可能会出现引用错误需要修改引用目录,按如下操作:

工程属性->C++目录:包含目录新增“$(SolutionDir)..\”

3)如果出现std::max错误,是因为工程中包含了windows.h或windef.h头文件,再使用c++标准库std::min或std::max,出现引用错误,要在工程配置中定义NOMINMAX宏,操作办法如下:

选择C/C++; 选择Preprocessor预处理器;在Preprocessor Definitions项中输入需要定义的宏名即可

4、因为升级内核,很多函数发生变化,需要注意修改,并重新编译ue4代码

5、如果需要修改工程配置,可参考

https://bebylon.dev/ue4guide/build-guide/ubt/buildconfiguration-xml-example/

6、编译UnrealCEFSubProcess,这个需要手工编译,编译时会出现部分C++文件编译不过,是因为cef类接口发生了变化,需要进行修改

   1)

   2)如果遇到编译错误:

E:\UEProjects\UnrealEngine\Engine\Source\Programs\UnrealCEFSubProcess\Private\UnrealCEFSubProcessRemoteMethodHandler.h(60): error C3646: “OVERRIDE”: 未知重写说明符

是因为,ue4中将OVERRIDE 宏undef了,需要为工程定义宏(加上红色部分):

#define OVERRIDE override
#pragma push_macro("OVERRIDE")
#undef OVERRIDE // cef headers provide their own OVERRIDE macro
THIRD_PARTY_INCLUDES_START
#if PLATFORM_APPLE
PRAGMA_DISABLE_DEPRECATION_WARNINGS
#endif
#include "include/cef_app.h"
//#include "ThirdParty\CEF3\cef_binary_89.0.17.ge7bbb1d_windows64\include/cef_app.h"

#if PLATFORM_APPLE
PRAGMA_ENABLE_DEPRECATION_WARNINGS
#endif
THIRD_PARTY_INCLUDES_END
#pragma pop_macro("OVERRIDE")

 

 

 

你可能感兴趣的:(UE4,c++,windows)