关于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下载(根据自己情况下载),
我这里选择的是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
- 关于windows下使用webkit或chrome浏览器内核总结(***)
- C# 开发Chrome内核浏览器(WebKit.net)
- C# 开发Chrome内核浏览器(WebKit.net)
- C# 开发Chrome内核浏览器(WebKit.net)
- Winform调用WebKitBrowser,基于chrome内核WebKit的浏览器控件
- 关于chrome浏览器-webkit-autofil覆盖input样式问题解决方案
- webkit内核下(chrome 360急速模式 搜狗高速模式)ctrl+v粘贴图片
- webkit内核(chrome、safari) 、FF、IE 、opera 下的linear-gradient 写法
- windows下使用qt webkit
- 浏览器内核WebKit编年史
- 浏览器内核WebKit编年史
- (解决360安全浏览器的各种坑)指定360安全浏览器使用 webkit 内核渲染
- chrome、webkit内核的各种浏览器、新版IE(微软Edge)浏览器惊天大bug集合
- Windows上使用CEF嵌入基于chrome内核浏览器小例
- Chrome浏览器Windows下快捷键大全
- 浏览器开发 IE webkit chrome浏览器定制
- 解决Chrome、Safair、Webkit等内核浏览器默认文本域和文本
- 从编程的角度,怎么让浏览器自动使用极速模式(webkit内核)
- 数据结构与算法 求最大子序列
- ssh框架的整合(struts-2.5.5+spring-4.3.4+hibernate-5.2.4)
- 初识Unity 3D——TrialRenderer、LineRenderer、AduioClip
- UML总结之(用例图)
- Java线程(二)----线程同步synchronized和volatile
- 关于windows下使用webkit或chrome浏览器内核总结(***)
- 哈尔滨理工大学全国邀请赛A题(dp)
- linux网络编程中要注意信号量
- Kafka入门经典
- Borg Maze poj 3026
- 文本阅读伸缩显示
- mysql 5.5.3向高版本导入问题
- ARM汇编部分指令
- 数学小知识