关于windows下使用webkit或chrome浏览器内核总结(***)

来源:互联网 发布:ios5.0.1软件下载 编辑:程序博客网 时间:2024/05/22 07:48

原文地址:http://blog.csdn.net/lixiang987654321/article/details/52120034

首先为什么需要使用webkit或chrome浏览器内核?本人之前一直使用IE控件中的IE浏览器,对于简单的开发已经够用了,但是IE有它的诟病,特立独行,对HTML5新特性兼容性非常差,由于近期在研究HTML5以及2.5D和3D地图相关技术,所以一开始就摒弃了使用IE内核的想法。关于windows下使用chrome浏览器内核或webkit内核,已经专研了好几天,一直在碰壁,我相信也有不少网友也跟我一样,查阅了几天都没有任何进展,下面我说说这几天查阅资料遇到的问题:

(1)关于webkit或chrome相关源码都需要编译,而且编译环境相当复杂,很多时候按照文章流程走,要么走不通,要么出一连串解决不了的错误,最终心灰意冷,直到放弃(大多数搞windows开发的在编译这块都缺少相关经验,不比linux开发员);

(2)能找到人家已经编译好的webkit或chrome内核库,但是不是最新的库,很多都是2012年之前的,太老的,对于近几年HTML5的飞速发展,我想那些陈旧的库已经不再适用了。


       我的目的很简单,就是能够使用webkit内核,在查阅的过程中发现chrome内核使用的就是webkit浏览器内核,它在webkit的基础上进行的改善以及速度提升,增加了一些新特性。所以在查阅webkit库无果的情况下,又绕回来查阅chrome浏览器内核,当然在chrome以及webkit查阅过程反复了好几次,到处都是碰壁,对于一个windows程序员来说,我们提供一个库给其他人使用,最简洁的方法就是提供头文件、dll以及对应的lib,这就足够了,所以我们也想能够得到这样的支持,但是往往不是如此,特别当前开源项目都是linux下面开发支持的比较多,然而,事实上对于我遇到的问题,估计其他人也遇到了,其他开源勇士也想到了这点,所以黄天不负有心人,在搜索很多篇文章里面找到了一个字眼libcef,然后通过该关键字,我才知道libcef就是windows开发员遇到我同样问题之后,为我们做的莫大贡献!

       首先说道libcef,首先了解下chrome浏览器内核或者说CEF,CEF就是chrome embedded Framework也就是chrome可嵌入框架的缩写,Chrome使用了Webkit的代码,继承了Webkit的优良排版引擎,渲染页面速度惊人说道libcef它其实就是对ContentAPI的封装(各位可以跟踪进一步了解ContentAPI,libcef也存在部分缺陷,如果解决不了我们可以直接使用ContentAPI做自己浏览器),大大降低了我们使用chromium内核的难度。接下来,就说说关键部分,在使用libcef过程以及使用时遇到的各种问题:

(1)下载libcef。libcef至今有人一直在更新维护,所以不担心使用的内核不是最新的,下载链接http://opensource.spotify.com/cefbuilds/index.html,这里会定时编译:如下,里面有linux,mac以及windows的版本,选择windows32bit或64bit下载(根据自己情况下载),


下拉,选择,windows版本:


根据系统情况下载32bit或64bit的源代码,我第一次下载额32bit的源码有点问题(压缩打开就是一个没有格式的文件,不是文件夹,下载多次后才正确--可能是与服务器下载或网络有关系)

       我这里选择的是windows32bit的压缩包:http://pan.baidu.com/s/1o8KWJIM(64bit源码包:http://pan.baidu.com/s/1mi1yaDy)

打开代码,树形结构如下:


         在Debug和Release有对应的lib库和Dll,也有include头文件库以对应的Demon,但是!问题来了,他提供的库缺少libcef_dll_wrapper库,所以我们还需要编译出来这个库!真是有点扯淡!!没办法,要使用啊,那就比不可少的编译该库,源码有了,vs开发环境有了,但是没有对应的project,我们如何使用现有的源码生成对应的project?还好有cmake工具http://pan.baidu.com/s/1geLALMF,安装cmake工具,启动开始菜单中的cmake (cmake-gui)


在弹出的界面中


        where is the source code: 选择源代码位置,也就是我们下载解压后的跟目录所在位置,我的根目录为F:/cef_binary里面就包含了cefclient、cefsimple等内容;

        where to build the binaries: 选择出的二进制文件存放目录,我也选择到E:\cef_binary_3.2743.1442.ge29124d_windows32根目录然后点击config按钮配置vs环境为visual Studio 9 2008,最后选择Generate生成二进制文件,第一次可能会弹出默认的vs2008配置:


         然后,点击一次生成即可,最后在根目录下生成了cef.sln解决方案,我们用vs2008打开该解决方案:

里面包含几个工程:

(1)ALL_BUILD总工程,编译所有其他工程

(2)cefclientdemon实例

(3)cefsimpledemon实例

(4)libcef_dll_wraper封装的库

(5)zero_check未知,暂时不用

         如图所示:


         我们编译整个解决方案,发现4、5都编译通过,生成了对应的libcef_dll_wraper.lib静态库,但是对应的Demon一个都编译不通过(如果缺少stdint.h文件请下载我的:http://pan.baidu.com/s/1i5dN449 放到vc90安装目录下即可),报libcef_string_utf8或16未找到,我不知道什么情况,查询网络找了n篇,其中有篇英文文章里面就描述了libcef_dll_wraper依赖libcef.lib,需要连接进来才能编译通过,我觉得奇怪,但是静态库是无法连接其他库的,所以我觉得是两个客户端没有找到libcef.lib,于是我用dependcy找到根目录下的Release(如果为Debug编译就找Debug),打开提示No section find等错误,而且右侧看不到改dll的任何接口,这个问题不仅仅是我遇到了,网络上的网友也遇到类似问题,他们大多还是没有解决,我猜想的是该libcef.dll正在被cmake使用导致的,于是我关了cmake(反正都已经变成生成了project工程),重新将新解压的Debug和Release目录(包含了libcef.lib和相关dll的)覆盖我的根目录,然后重新清理编译,终于编译通过了!!!!!!(此时只能是realease,debug的有出现改问题)此时真想张口骂人!但是终于算是解决了libcef编译问题了。(其后,我又去重试我的整个过程,发现该问题并不是这个引起的,应该它自动编译导致的问题,转而我去下载32bit的---这里说明一下我第一次用64bit的,后来不行又重新下载了32bit的,32bit的编译没有问题,之前下载的32bit的也有问题哦!删除所有项目)

         接下来就是vs2008指定vc++目录的头文件(就是根目录)以及库文件目录(Debug或Release目录以及libcef_dll_wraper.lib所在目录),然后建立项目连接libcef.lib和libcef_dll_wraper.lib即可开始我们的chrome浏览器开发之旅了!

        此次折磨好几天,感觉需要连接一下linux下编译开源代码那套复杂过程,不然很多开源项目都用不了,惭愧!

最后,我使用的工具或库下载链接如下集合如下:

(1)stdint.h头文件,在头文件非常有用,一般windows下都没有该头,但都需要使用该头文件声明,这是在做ffmpeg的时候保存的,是通用的:http://pan.baidu.com/s/1i5dN449

(2)cmake编译工具:http://pan.baidu.com/s/1geLALMF 根据源码生成project工程和解决方案文件;

(3)我的libcef源代码:http://pan.baidu.com/s/1o8KWJIM

(4)最后我编译通过的生成了libcef_dll_wraper.lib静态库以及Demon能编译通过不报错的工程:http://pan.baidu.com/s/1dFG5v0l

1 0