CEF,Chromium Embedded Framework的缩写。CEF 的官网介绍的很简洁:A simple framework for embedding chromium browser windows in other applications。具体地说就是一个可以将浏览器功能(页面渲染,JS 执行)嵌入到其他应用程序的框架。感兴趣的看这里:[https://bitbucket.org/chromiumembedded/cef](https://bitbucket.org/chromiumembedded/cef)。
用CEF的好处是开发Web和Native混合的应用非常方便,比调用Windows的ie组件要好得多,最起码可以随应用携带一个稳定版本的Chrominum,而ie版本太多,你的应用很依赖用户的操作系统,各种兼容性的坑……
花了大半天时间,终于跑通了cefsimple这个小示例。记录下过程。
# 工具
我的搭配:
- VS 2013
- [CMake 3.4.1](https://cmake.org/download/)
- CEF 3.2357.1271([CSDN下载频道的binary包](http://download.csdn.net/detail/zhang116868/8750429))
我把CEF Binary for windows解压到了这个目录:D:\projects\cef_binary_3.2357.1271.g8e0674e_windows32,下文我们用CEFDIR来代替它。
现在的CEF Binary里没有VS项目和解决方案了,得自己生成。
# 环境配置与编译过程
cefsimple示例依赖libcef_dll_wrapper,需要先编译libcef_dll这个项目。
### 编译libcef_dll
1. 到[https://cmake.org/download/](https://cmake.org/download/)下载CMake 3.4.1(cmake-3.4.1-win32-x86.zip)
1. 解压到某个目录,我这里是E:\software\cmake-3.4.1-win32-x86,后面有用 your-cmake-dir指代。打开命令行(cmd.exe),执行“set path=your-cmake-dir/bin;%path%”命令。
1. 切换到CEFDIR/libcef_dll目录,执行“CMake .”命令,生成VS 2013的项目文件和solution文件
1. 使用VS 2013打开CEFDIR/libcef_dll目录下的Project.sln,选中libcef_dll_wrapper这个项目,打开项目属性,设置C++附加包含目录,把CEFDIR目录添进去
1. 选中libcef_dll_wrapper,鼠标右键,属性–>配置属性–>C/C++–>预处理器定义,编辑,新增一个NOMINMAX宏。这是为了解决std::min/std::max和VC全局定义的min/max宏冲突。libcef_dll里有些cc文件内用了std::min/max模板函数,不添加NOMINMAX,可能出现C2589和C2059错误
1. Debug版本,运行库选择“多线程调试(MTd)”;Release版本选择MT。
1. 编译,生成libcef_dll_wrapper.lib文件
1. 把libcef_dll_wrapper.lib放到CEFDIR/Release(或Debug)目录下
我编译中遇到了一些错误,找到了解决办法,已经包含在上面的步骤里了。
### 编译cefsimple示例
有了libcef_dll_wrapper,就可以编译cefsimple了。
我本来想用CMake生成,结果折腾半天,CMake执行过了,却没生成对应的cefsimple.vcxproj……只好手动创建了一个VS项目。
过程如下:
1. 自己创建一个cefsimple项目,Win32类型,空项目
1. 将cefsimple_win.cc,simple_app.cc,simple_handler.cc,simple_handler_win.cc作为源文件添加到项目里
1. 将resource.h,simple_app.h,simple_handler.h作为头文件添加到项目里
1. 设置附加包含目录,把CEFDIR目录加进去
1. 设置附加库目录,CEFDIR/Release(或Debug)
1. 添加附加依赖项,把libcef_dll_wrapper.lib、libcef.lib、DbgHelp.lib加进去
1. simple_app.cc中的www.google.com替换为www.baidu.com(Google打不开啊……)
1. Debug版本,运行库选择“多线程调试(MTd)”;Release版本选择MT。注意这里的选择,和libcef_dll要一致,不然会出链接错误
1. 把工作目录设置为CEFDIR/Release(或Debug)
1. 编译运行
运行时可能会Crash,把CEFDIR/Resources目录下的内容拷贝到CEF/Release(或Debug)下即可。CEF需要里面的icudtl.dat、语言文件等。
运行效果如下图:
![cefsimple效果图](https://box.kancloud.cn/2016-02-22_56caac2b80dff.jpg "")
CEFDIR目录下有个README.txt文件,一定要看,我编译通过后运行总crash,在VS一点一点Debug、看程序输出,花了老长时间才发现时Resources的问题!
Ok,环境就这样好了,接下来可以研究CEF的SDK了。
- 前言
- CEF Windows开发环境搭建
- CEF加载PPAPI插件
- VS2013编译最简单的PPAPI插件
- 理解PPAPI的设计
- PPAPI插件与浏览器的交互过程
- Windows下从源码编译CEF
- 编译PPAPI的media_stream_video示例
- PPAPI插件的绘图与输入事件处理
- 在PPAPI插件中创建本地窗口
- PPAPI插件与浏览器的通信
- Windows下从源码编译Skia
- 在PPAPI插件中使用Skia绘图
- 加载DLL中的图片资源生成Skia中的SkBitmap对象
- PPAPI+Skia实现的涂鸦板
- PPAPI中使用Chromium的3D图形接口
- PPAPI中使用OpenGL ES绘图