首页 > 技术文章 > 第一篇,编译生成libcef_dll_wrapper

gushandujian 2019-03-19 12:44 原文

  因为工作原因需要在程序里面嵌入地图,在网上看了百度地图和高德地图都没有提供c++的接口,提供有web接口,那只好在程序里面嵌入web控件了,第一想到的是web browser控件,接着脑海里又想到IE的种种兼容性问题,决定放弃IE控件。网上搜索了一下发现cef框架用的比较多,比较稳定,好处就不多说了,重点记录下我的使用经历,如果我的理解有误,欢迎评论指正。
  先来看看cef的代码,我在https://bitbucket.org/chromiumembedded/cef这个地方看到有源代码,至于哪个地方是官方我也没有深究。
  

  

  在这我们可以看到新版本,编译需要工具和平台。然后就是一顿准备工作。
  我选择使用别人已经编译好的dll文件,懒得自己费劲,现在要做的就是下载一个已经编译好的版本。
  

  

  我建议下载标准发布版,当然也可以下载第二个,最下发布版。我下载的是cef_binary_3.3683.1920.g9f41a27_windows32.tar.bz2,下面记录我的编译过程,让人有点郁闷。下载完这个文件解压,然后进入libcef_dll这个文件夹,在这个文件夹里面有个CMakeLists.txt文件,这个文件具体功能不在这说,我要记录的是通过这个文件生成一个vs017解决方案.sln文件。首先下载cmake,我下载的版本是3.14,打开cmake,选择cmakelists.txt所在文件夹和要生成的sln文件位置,然后点击generate。
  

  结果呢,错误出现了。
  

  手术刀,修改cmakelists.tst,增加红色圈起来的内容,然后就OK了,vs2017解决方案就生成了,但是编译还是有问题的。
  

  生成的文件截图留个纪念吧。
  
  点击sln打开vs2017开始编译吧。
  
  一堆未找到头文件,打开项目,设置附加目录。
  
  设置后再编译,结果出现
  
  原因发现max定义的问题,
  

  那就增加红色的宏定义
  

  再编译,大功告成。
  第二种方法  
  利用vs2017自带的cmake编译,打开vs2017,选择  文件->打开->打开文件夹,选择cmakelist所在的文件夹,vs会自动识别它,然后就可以编译了。    记录一个问题,我的电脑上装的有chrome浏览器,因为查资料需要,我装的有vpn,当开启系统代理时也就是说浏览器设置了代理服务器时,libcef带的cefsimple程序就会挂掉,我自己做的示例程序也挂掉了。原因应该是代理服务器设置的原因,如何解决现在我还不知道。只知道把代理服务器关掉就OK了,后面再解决。

推荐阅读