cef编译及使用-Windows上编译cef

2017/02/17 program 共 2932 字,约 9 分钟

可以从以下站点下载cef源码:

使用CEF的DUILB开源项目参考: karllen/cef3-duilib-YDDemo: cef3+duilib开源仿有道词典

Google Code上倒是可以下载,但是是老的版本,2012年的: Google Code chromiumembedded

但是好处是有vs2005、vs2008、vs2010版本的sln,不需要使用CMake转换。

VisualStudio2017、2019编译(推荐)

VisualStudio2017、2019编译非常快速,使用CMake对cef_binary_3.3578.1860.g36610bd_windows32创建build项目,创建成功后只编译libcef_dll_wrapper即可,其他lib和资源使用编译好的即可。

2021年3月3日,以下载 cef_binary_88.2.9+g5c8711a+chromium-88.0.4324.182_windows32_minimal 为例,使用CMake-gui转换,默认是64位版本(如果需要使用32位版本,转换的时候注意选择Win32),转换后的vs工程默认就是Unicode字符集MTd(MT)的,直接编译libcef_dll_wrapper即可,生成的lib拷走,其他的lib直接使用现成的。

如何使用

必须文件

经测试主程序目录下须携带以下文件:

libcef.dll
chrome_elf.dll
icudtl.dat
v8_context_snapshot.bin
cef.pak
cef_extensions.pak
cef_200_percent.pak
cef_100_percent.pak

如果主程序运行仍然出错,可能就是资源文件没有配齐,可以再复制一些cef的资源文件进去试试。

注意

  • 尽量链接release版本的,要链接:libcef.lib、cef_sandbox.lib、libcef_dll_wrapper
  • 字符串要传递的时候,需转换为Unicode,可使用std::wstring转换,注意使用CStringW转换可能会有问题。
  • VisitDOM只能在render进程中使用,无法在browser进程中使用。

cef的通信及同步调用JS

常见问题

  • cefinitialize崩溃:说明exe执行路径下缺少相关文件导致初始化失败,可以把Resources目录下的locales文件夹、icudtl.dat、cef*.pak等文件复制过来。

老版本VisualStudio编译(不推荐,系较早时期研究cef的记录)

CEF Automated Builds下载Windows 32-bit Builds,找到Minimal Distribution或Standard Distribution(版本里面有CMakeLists.txt才能用CMake转换)下载。

vs2008能编译的较新的版本 11/19/2016 - CEF 3.2840.1518.gffd843c / Chromium 54.0.2840.99,往后的不能编译,可能需要vs2015.

一个可用的稳定版本:10/12/2016 - CEF 3.2785.1485.g2b5c3a7 / Chromium 53.0.2785.116,但是网页乱码 解析不完全。

CMake转换的时候会出错:

Error in configuration process, project files may be invalid

可以看看输出的错误信息是:

CMake Error at CMakeLists.txt:202 (add_subdirectory):
  The source directory

    F:/opensource/cef_binary_3.3163.1669.ge260cbb_windows32_minimal/tests/cefclient

  does not contain a CMakeLists.txt file.


CMake Error at CMakeLists.txt:203 (add_subdirectory):
  add_subdirectory given source "tests/cefsimple" which is not an existing
  directory.


CMake Error at CMakeLists.txt:204 (add_subdirectory):
  add_subdirectory given source "tests/gtest" which is not an existing
  directory.


CMake Error at CMakeLists.txt:205 (add_subdirectory):
  add_subdirectory given source "tests/ceftests" which is not an existing
  directory.

就是几个测试用的工程不存在,我们不需要这些,直接打开CMakeLists.txt进行修改找到:

add_subdirectory(tests/cefclient)
add_subdirectory(tests/cefsimple)
add_subdirectory(tests/gtest)
add_subdirectory(tests/ceftests)

注释掉,改为:

# add_subdirectory(tests/cefclient)
# add_subdirectory(tests/cefsimple)
# add_subdirectory(tests/gtest)
# add_subdirectory(tests/ceftests)

保存后重新用CMake转换一次即可生成vs项目,vs2008的也完全没问题,轻便。

打开VS->项目->属性->配置属性->C/C++->常规->将警告视为错误修改为“否”,字节编码改为多字节

参考

文档信息

Search

    Table of Contents