CEF3开发者系列之工程和代码结构

CEF支持一系列的编程语言和操作系统,并且能很容易地整合到新的或已有的工程中去。

它的设计思想就是易用且兼顾性能。CEF基本的框架包含C/C++程序接口,通过本地库的接口来实现,而这个库则会隔离宿主程序和 Chromium&Webkit的操作细节。它在浏览器控件和宿主程序之间提供紧密的整合,它支持用户插件,协议,javascript对象以及 javascript扩展,宿主程序可以随意地控件资源下载,导航,上下文内容和打印等,并且可以跟Google Chrome浏览器一起,支持高性能和Html5 技术。

工程和代码结构是了解一套代码最基本的入口,了解了代码结构,基本上就知道这套代码要做什么,大体上如何去做的。先看图

  1. cefclient/cefsimple: 包含基于CEF的一个简单应用程序示例,可使用版本分发中的文件创建。该应用包含了大部分CEF函数的示例。
  2. Debug:包含构建debug 版本的共享库(libcef)和该平台所需的其他支持库。这个应用程序提供创建所需的最小功能浏览器窗口的示例。
  3. Release: 存放release版本的CEF动态库和运行在该平台所需的其他库文件。
  4. include :包含了CEF所需的头文件
  5. libcef_dll :包含 libcef_dll_wrapper静态链接库源代码,使用CEF C++API的应用的必要链接库。
  6. Resource: 包含创建CEF应用需要的源代码,该文件夹还包含.pak文件(全局资源的二进制文件)和和平台相关所需的图片和光标资源

在CEF3 3.2272版本(对应chromium 41)之后的cefclient示例里边又分了几个子文件夹:browser、common、renderer、resources。

  1. browser:包含浏览器进程即当前主进程所用的代码文件。
  2. renderer:包含renderer进程需要的代码文件
  3. common:包含实现主进程和renderer进程的共用文件
  4. resources:主要是测试需要的图片、html文件、pdf文件以及鼠标光标资源。

CEF项目的一些dll和资源作用

libcef.dll------------------------->Cef的核心类库

icudt.dll-------------------------->支持unicode的类库

ffmpegsumo.dll--------------------->支持音频和视频的类库

d3dcompiler_43.dll----------------->WinXP下支持3D的类库

d3dcompiler_46.dll----------------->Win7和之后的Win支持3D的类库

libEGL.dll------------------------->加速合成支持库

libGLESv2.dll---------------------->加速合成支持库

locales---------------------------->此文件夹存放了各种国家的语言资源

cef.pak---------------------------->WebKit相关的资源(谷歌浏览器的核心是webkit)

devtools_resources.pak------------->调试器的相关资源

顺便说一下,我使用的是CEF3 2.2272版本的,开发环境为VS2008, Win7,这之后的文章和代码都是基于此版本和开发环境。其他版本和开发环境请相应的变通,大体上差不多。

时间: 2024-08-02 11:03:03

CEF3开发者系列之工程和代码结构的相关文章

CEF3开发者系列之进程和线程

CEF3是一个多进程架构框架,如果有了解过chromium的进程架构的,那么就很容易了解CEF3的多进程了.打开CEF3源代码中发布的cefclient实例,如果打开的页面带有flash或者其他插件.在任务管理其中可以看到四个进程,显示出命令行列.可以看到一个主进程,一般主进程是Browser进程,其他的分别是渲染进程(Render),GPU加速进程(GPU),插件进程(NPAPI或者PPAPI). Browser进程:被定义为主进程,负责窗口管理,界面绘制和网络交互. Render 进程:Bl

CEF3开发者系列之类和接口

CEF3基本的框架包含C/C++程序接口,通过本地库的接口来实现,而这个库则会隔离宿主程序和 Chromium&Webkit的操作细节.它在浏览器控件和宿主程序之间提供紧密的整合,它支持用户插件,协议,javascript对象以及 javascript扩展,宿主程序可以随意地控件资源下载,导航,下下文内容和打印等.下边总结一些最常用到的类和接口,便于了解整个cef3的代码. CefBrowser是主要的浏览器窗口类,可以用静态的函数CreateBrowser() 和CreateBrowserSy

CEF3开发者系列之进程间消息传递

在使用CEF3作为框架开发过程中,实现WebSockets.XMLHttpRequest.JS与本地客户端交互等功能时,需要在渲染(Render)进程和浏览(Browser)进程中传递消息.CEF3在这个方面进行了很好的封装,普通用户只需要了解几个接口和函数就可以实现进程间消息传递.根据个人的开发经验和理解,以cefclient为例子总结下CEF3消息的传递机制,有不正确之处,请赐教! 一般通过指定的CefBrowser实例,调用CefBrowser::SendProcessMessage()方

CEF3开发者系列之Cookies管理和共享<转>

原帖地址:https://www.cnblogs.com/guolixiucai/p/6994559.html 涉及网页登录相关的技术,Cookies肯定是忽略不了的.由于项目的需要,要做一个双核的产品.双核间切换会涉及到登录状态的问题,共享Cookies是一个很好的方案.既然涉及到共享cookies,那么读取完整的cookies和设置cookies就是问题的关键.由于应用本身只需要加载自家的平台,不用考虑共享所有网站cookie的问题,所以需要获取的和设置的cookies相对比较简单.IE浏览

CeF3开发者系列之外篇——IE中JS与C++交互

使用IE内核开发客户端产品,系统和前端页面之间的交互,通常给开发和维护带来很大的便利性.但操作系统和前端之间的交互却是比较复杂的.具体来说就是脚本语言和编译语言的交互.在IE内核中html和css虽然不兼容,但是IE编程接口是完全一样的,这得益于微软的COM组件的结构化设计和实现.所以与IE交互,必须得先说一下COM,COM全称组件对象模型(Component Object Model). COM的基本思想很简单,所有的组件模块都提供一个最根本的接口, IUnkown,它有三个方法,AddRef

CEF3开发者系列之CefEnableHighDPISupport详解

在CEF3中,CefEnableHighDPISupport()这个接口函数在使用时一般不为人所注意,但是如果稍有不慎,会造成打开的网页不能填满窗口的问题.如果是需要flash插件才能运行的游戏.则会出现打开游戏后,调整窗口大小时,发现游戏界面的大小并未随之改变,而且游戏里的点击位置却与界面显示的位置也不对应. 是什么原因出现这种情况呢?先来看看CefEnableHighDPISupport()这个接口函数是干什么用的.cef_app.h中,如下所说. /// // Call during pr

JSqlParser系列之二代码结构(原)

JSqlParser系列之二代码结构(原) 博客园 百味木屋原创,转载请注明出处. 上一篇文章简单介绍如何建立JSqlParser工程,本章对JSqlParser工程的代码结构作大致地介绍. 一.目录结构 JSqlParser的目录结构比较简单,主要有表达式,解析器,语句处理几个目录.下面这张图给出了一个具体的SQL语句与表达式: 接下来,简要介绍一下在JSqlParser中几个抽象概念. 二.SQL语句(statement) JSqlPaser将所有的SQL语句抽象为Statement,Sta

Quick-Cocos2d-x初学者游戏教程(二) -------------------- Quick内部的代码结构及相应的原理

Quick-Cocos2d-x初学者游戏教程(二) 上一章我们已经了解了Quick的一些基础知识,所以本章我们将开始深入到Quick内部,了解它内部的代码结构,同时在解析的过程中学到相应的原理,并学会如何修改.添加相应的代码文件,比如实现屏幕的分辨率适配. 前面我们创建了一个叫做parkour的游戏项目,其意思就是本人本来打算要做一个跑酷游戏的,但是因为这几天玩了一款叫做<el>的飞行游戏,非常有意境,并且几乎零差评,所以请允许我任性一下,善变的我不想做跑酷游戏了,而是想要挑战下这种类型的游戏

[Android系列—] 2. Android 项目目录结构与用户界面的创建

前言 在 [Android系列-] 1. Android 开发环境搭建与Hello World 这一篇中介绍了如何快速搭建Android开发环境, 并成功了建立一个没有任何代码更改的 Android 应用程序. 接下来, 就得看看 1. 使用 Eclipse  创建的APP 有哪些目录和文件 2. 如何创建一个比Hello World 高级的一个用户界面 appcompat_v7 在创建 MyFirstApp 的 Android 项目时, 会发现在项目路径下多出了一个 appcompat_v7