Chromium Embedded Framework (CEF)是个基于Google Chromium项目的开源Web browser控件,支持Windows, Linux, Mac平台。除了提供C/C++接口外,也有其他语言的移植版。

一、下载CEF3

下载地址:http://opensource.spotify.com/cefbuilds/index.html,如图所示:

Standard Distribution:标准工程
Debug Symbols、Release Symbols:libcef.dll的pdb,debug和release版本
下载Standard Distribution,解压后文件格式:


二、CMake,VS编译

在解压后文件夹新建Build文件夹,CMake配置如下:

这里我选择的是VS2017,x64模式,支持x86可根据需要选择。Generate运行,build文件夹VS工程结构如图所示:

点击cef.sln,这里我们只关注libcef_dll_wrapper这个工程,分别生成debug和release两个版本的libcef_dll_wrapper.lib


三、二次开发配置工程

其实,simple工程就可以运行,为了满足二次开发,这里从新建VS工程开始,配置cef二次开发工程:

1. 新建cef工程

新建cef工程,debugx64、releasex64、src文件夹,将sample工程的文件复制到src文件夹,并在VS中添加现有文件到cef工程,再将include文件夹(cef开发头文件)复制到cef工程,文件结构如图所示:

2. cef工程属性配置

cmake配置了VS2017,x64模式,cef的工程也需要对debugx64,releasex64进行配置:

1. 配置输出目录,平台工作集,字符集

debugx64: .\debugx64\ Visual Studio 2017(v141) UniCode字符集
releasex64: .\releasex64\ Visual Studio 2017(v141) UniCode字符集

2. 配置附加包含目录

debugx64:..\cef 、 ..\cef\include
releasex64:..\cef 、 ..\cef\include

3. 配置预处理器定义

debugx64:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
_DEBUG
V8_DEPRECATION_WARNINGS
BLINK_SCALE_FILTERS_AT_RECORD_TIME
_WIN32_WINNT=0x0602
WINVER=0x0602
WIN32
_WINDOWS
NOMINMAX
PSAPI_VERSION=1
_CRT_RAND_S
CERT_CHAIN_PARA_HAS_EXTRA_FIELDS
WIN32_LEAN_AND_MEAN
_ATL_NO_OPENGL
_HAS_EXCEPTIONS=0
_SECURE_ATL
CHROMIUM_BUILD
TOOLKIT_VIEWS=1
USE_AURA=1
USE_ASH=1
USE_DEFAULT_RENDER_THEME=1
USE_LIBJPEG_TURBO=1
USE_MOJO=1
ENABLE_ONE_CLICK_SIGNIN
ENABLE_REMOTING=1
ENABLE_WEBRTC=1
ENABLE_PEPPER_CDMS
ENABLE_CONFIGURATION_POLICY
ENABLE_INPUT_SPEECH
ENABLE_NOTIFICATIONS
ENABLE_HIDPI=1
ENABLE_EGLIMAGE=1
__STD_C
_CRT_SECURE_NO_DEPRECATE
_SCL_SECURE_NO_DEPRECATE
NTDDI_VERSION=0x06020000
_USING_V110_SDK71_
ENABLE_TASK_MANAGER=1
ENABLE_EXTENSIONS=1
ENABLE_PLUGIN_INSTALLATION=1
ENABLE_PLUGINS=1
ENABLE_SESSION_SERVICE=1
ENABLE_THEMES=1
ENABLE_AUTOFILL_DIALOG=1
ENABLE_BACKGROUND=1
ENABLE_AUTOMATION=1
ENABLE_GOOGLE_NOW=1
CLD_VERSION=2
ENABLE_FULL_PRINTING=1
ENABLE_PRINTING=1
ENABLE_SPELLCHECK=1
ENABLE_CAPTIVE_PORTAL_DETECTION=1
ENABLE_APP_LIST=1
ENABLE_SETTINGS_APP=1
ENABLE_MANAGED_USERS=1
ENABLE_MDNS=1
ENABLE_SERVICE_DISCOVERY=1
USING_CEF_SHARED
__STDC_CONSTANT_MACROS
__STDC_FORMAT_MACROS
DYNAMIC_ANNOTATIONS_ENABLED=1
WTF_USE_DYNAMIC_ANNOTATIONS=1

releasex64:无需配置

4. 配置代码生成

debugx64:多线程调试 (/MTd)
releasex64:多线程调试 (/MTd)

5. 配置附加库目录

debugx64:
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64
..\cef\debugx64
releasex64:..\cef\debugx64

6. 配置附加依赖项

debugx64,releasex64:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
wininet.lib
dnsapi.lib
version.lib
msimg32.lib
ws2_32.lib
usp10.lib
psapi.lib
dbghelp.lib
winmm.lib
shlwapi.lib
kernel32.lib
gdi32.lib
winspool.lib
comdlg32.lib
advapi32.lib
shell32.lib
ole32.lib
oleaut32.lib
user32.lib
uuid.lib
odbc32.lib
odbccp32.lib
delayimp.lib
credui.lib
netapi32.lib
comctl32.lib
rpcrt4.lib
opengl32.lib
glu32.lib
libcef_dll_wrapper.lib
cef_sandbox.lib
libcef.lib
7. 配置系统

debugx64,releasex64:窗口

8. 配置基址

debugx64,releasex64:随机基址,固定基址均选否

3. debugx64,releasex64文件夹配置

首先将第二步编译的libcef_dll_wrapper.lib的debug和release版本分别复制到debugx64,releasex64文件中;
将解压目录的Debug和Resources文件夹中文件复制到debugx64中,将解压目录的Release和Resources文件夹中文件复制到releasex64中,Resources文件夹存放着CEF初始化需要的文件。

4. 运行可能遇到的问题

1. 在simple_app.cc文件113行将url更改为想要打开的网站
1
url = "http://www.qtnull.com";
2. 运行过程中可能存在文件引用的问题,比如
1
2
#include "tests/cefsimple/simple_handler.h"
//由于是复制的cefsimple工程的文件,所以引入路径有问题,删掉tests/cefsimple/即可
3. error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”

这是由于引入外部DLL和工程设置的C/C++-代码生成-运行库设置不统一情况导致,设置成一致即可,文中均设置:多线程调试 (/MTd)模式。

4. 运行成功截图:


参考文献:
https://www.cnblogs.com/liulun/p/3681241.html
https://blog.csdn.net/csdnyonghu123/article/details/87982333