windows下CEF3开发环境搭建
本文基于教程
windows下CEF3开发环境搭建(上)(作者:大匡先生),这个教程已经写得很详细,感谢原作者。在具体的配置中我遇到了一些问题,所以对原教程做了修改和补充。
第一步:下载文件
CEF3二进制包
选择windows64位版本,如下:
下载后解压。
CMake编译工具
选择window64位二进制版本,如下:
下载后安装。
参考Windows下CMake安装教程
第二步:配置工程
运行CMake,分别设置好CEF3解压的路径和库的编译路径(无须事先创建,会提示自动生成),然后点击两次Configure按钮,如下:
然后弹出VS版本的选择,我这里选择2017,第二个选择×64,点击Finish按钮,如下:
不出问题的话,底下的消息框会提示配置完成,如下:
然后点击Generate按钮,不出意外显示生成完成,如下:
第三步:打开工程,编译libcef库和样例工程
用VS2017打开cef.sln工程文件,如下:
其实我们下载的已经是libcef的二进制包,这里主要是编译libcef_dll_wrapper(提供对libcef库的C++封将)和几个样例工程。需要分别编译好x64 Debug和x64 Release版本,在编译x64 Debug版本的时候可能有些问题(报告配置错误),因为libcef_dll_wrapper其实已经生成,最终不会影响我们的开发工作,所以遇到这个问题时可以先忽略。
第四步:整理并收集开发应用程序需要的所有libcef文件。
新建一个CEF3目录,收集所有依赖的文件,如下:
bin->x64->Debug来源于:
cef_binary_84.4.1+gfdc7504+chromium-84.0.4147.105_windows64\Debug
bin->x64->Release来源于:
cef_binary_84.4.1+gfdc7504+chromium-84.0.4147.105_windows64\Release
include来源于:
cef_binary_84.4.1+gfdc7504+chromium-84.0.4147.105_windows64\include
lib->x64->Debug来源于:
cef_binary_84.4.1+gfdc7504+chromium-84.0.4147.105_windows64\Debug里的lib后缀文件
将camke生成的libcef_dll_wrapper.lib 也要添加进来
lib->x64->Release来源于:
cef_binary_84.4.1+gfdc7504+chromium-84.0.4147.105_windows64\Release里的lib后缀文件
Resources来源于:
cef_binary_84.4.1+gfdc7504+chromium-84.0.4147.105_windows64\Resources
其他来源于:
cef_binary_84.4.1+gfdc7504+chromium-84.0.4147.105_windows64\tests\cefsimple
第五步:创建应用程序工程
新建一个空项目,如下:
然后,拷贝第四步整理的CEF3目录到工程目录下,并拷贝CEF3目录下的源码文件到工程目录下,如下:
并将这些源码文件添加到工程中,如下:
第六步:配置工程并编译。
我们先配置x64 Debug版本。
配置头文件包含目录,添加CEF3。配置库目录,添加CEF3\lib\x64\Debug。如下:
配置依赖项,添加libcef.lib;libcef_dll_wrapper.lib。如下:
这里修改为windows子系统,否则默认会找main入口函数。
这里子符集也修改下:
然后启动编译,提示报错:
这是由于拷贝的源码文件,路径包启不对,分别去掉前面的tests/cefsimple。
重试报错如下:
解决:
再次编译,成功。在工程目录的x64/Debug下生成了可执行文件。
第七步:配置应用程序运行。
这时候应用程序还不能直接运行,需要拷贝依赖文件,先把之前准备的CEF3/bin/x64/Debug拷贝到应用程序目录,如下:
按理说,到这一步应该是算准备完成了,可以启动应用程序了,但是你双击运行它,除了鼠标转动几秒钟外,没有任何窗口弹出来。
具体解决方法为:
1.在CEF3源码目录找到cefsimple.exe.manifest和compatibility.manifest,拷贝到demo工程目录下:
还需要将cefsimple.exe.manifest修改为demo.exe.manifest,即工程名.exe.manifest
2.添加生成后事件,输入代码:
代码如下:
setlocal
mt.exe -nologo -manifest "compatibility.manifest" "demo.exe.manifest" -outputresource:"D:/A-LAB/osg/cef/demo/x64/Debug/demo.exe";#1
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd
3.重新编译。
修改URL
并运行demo.exe,展示如下: