回顾

上期我们使用最新版本的cef,编译libcef_dll_wrapper。编译libcef_dll_wrapper

本期我们开始将libcef_dll_wrapper嵌入我们自建的工程

操作步骤

新建窗口程序

因为是cef105版本,因此使用VS2019

引入工程libcef_dll_wrapper 

 参照cefsimple对cef105进行改造

cefsimple与cefclient的区别

  • 相比之下,cefclient更像一个成熟的浏览器,为了自身的测试页面,新增了不少业务接口,代码也较为复杂

  • cefsimple更类似一个简单的窗口嵌入页面,与实际的产品设计较为符合

  • cefsimple未发现,C++与JS互相调用的入口,需要新增

  • cefsimple对于一些视频的播放,同样是支持的,因此参照的时候,决定选择cefsimple进行改造

关键步骤

  • 新增ClientApp类,继承于CefApp、CefBrowserProcessHandler

  • 新增继承于CefWindowDelegate、CefBrowserViewDelegate的派生类

  • 项目需要定义宏CEF_USE_SANDBOX,使用沙箱

  • 运行后白屏,要求创建manifest文件放在项目根目录下,否则程序无法识别系统版本

过程中遇到的编译问题 

  • debug下引入cef_sanbox.lib,会报错,需要在预处理器下申明_HAS_ITERATOR_DEBUGGING=0

  • cef_sanbox.lib参与编译后,报错无法解析的外部符号 __imp_WSASetLastError,需要在项目的静态库输入中添加ws2_32.lib

  • cef_sanbox.lib参与编译后,报错无法解析的外部符号 VerQueryValueW,需要在项目的静态库输入中添加version.lib

  • cef_sanbox.lib参与编译后,报错无法解析的外部符号 __imp_SetupDiGetClassDevsW,需要在项目的静态库输入中添加setupapi.lib

  • cef_sanbox.lib参与编译后,报错无法解析的外部符号  __imp_InitPropVariantFromCLSID,需要在项目的静态库输入中添加Propsys.lib

  • cef_sanbox.lib参与编译后,报错无法解析的外部符号  PowerDeterminePlatformRoleEx,需要在项目的静态库输入中添加PowrProf.lib

  • cef_sanbox.lib参与编译后,报错无法解析的外部符号  __imp_IsOS,需要在项目的静态库输入中添加shlwapi.lib

  • cef_sanbox.lib参与编译后,报错无法解析的外部符号  __imp_timeEndPeriod,需要在项目的静态库输入中添加Winmm.lib

  • cef_sanbox.lib参与编译后,报错无法解析的外部符号  __imp_SymCleanup,需要在项目的静态库输入中添加dbghelp.lib

  • cef_sanbox.lib参与编译后,报错无法解析的外部符号  __HrLoadAllImportsForDll,需要在项目的静态库输入中添加Delayimp.lib

 

总结

以上 ,即完成了对libcef_dll_wrapper的简单嵌入,后续文章将描述,参照cefclient,分离app、browser、render等对象,新增JS与C++相互调用。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐