一步步CEF(2)之编译ceflicent

菜鸟与 cef 的邂逅之旅(一):cef 源码获取与编译 一、引言最近工作中涉及到了有关嵌入浏览器控件的任务,并且要求支持 H5。之前使用了 wke,但是发现其对于 H5 的支持不够好,因此只能选择“闻名已久”的 cef。cef 是什么呢: CEF 全称 Chromium Embedded Framework, 是一个基于 Google Chromium 的开源项目。 Google Chromium 项目主要是为 Google Chrome 应用开发的 阅读详情

一步步CEF(1)之编译libcef_dll_wrapper.lib已经提供了c++的静态库,这次要将cefclient编译出来。这里要说明一下,如果仅仅将cefclient编译的话,没什么好说的,直接按上文提示拉进来,将相应的设置也类似设置就可以了。这里的cefclient我需要做一个程序内部通讯,需要用到CreateMapping,OpenMapping等(这个是共享内存,自行搜索,这里不介绍),因为需要处理实时的命令,那么就不能用“CefRunMessageLoop();”那么简单。

1.新建一个subProcess的工程,写一个很简单的程序,应该是用于渲染之类的。

SubProcess

这里的sub_process.cc可以直接将{CEF_SRC_Folder}\tests\cefclient\cefclient_win.cc复制过来,和上图一样写一个“int SubProcess(HINSTANCE hInstance, int nCmdShow)”函数,然后在wWinMain下调用“return client::SubProcess(hInstance, nCmdShow);”。这样生成一个subProcess.exe(后面主程序会自动调用的,Debug的时候不一定会用到,但是Release版本一定会)

降低编译难度,我在subProcess目录下新建了SRC子目录,然后将{CEF_SRC_Folder}\tests和{CEF_SRC_Folder}\include复制到SRC下面

subprocess files

然后将cefclient_win.cc,改为sub_process.cc,如上述改写。

再将tests下面的cefclient和shared的文件都拉进工程。配置大部分跟编译libcef_dll_wrapper.lib差不多,我贴一下截图,不再细说。注意:上图中的bmp.cpp和logger.cpp和MsgHandler.cpp属于个人测试,与subProcess无关。

sub1

 

包含目录=“$(SolutionDir);$(SolutionDir)$(ProjectName)\SRC;$(IncludePath)”

库目录=“$(SolutionDir)$(Configuration)\;$(LibraryPath)”

sub2

 

附加包含目录=“$(SolutionDir)$(Configuration)\;%(AdditionalIncludeDirectories)”

sub3

“预处理器”,“代码生成”,“高级”跟一步步CEF(1)之编译libcef_dll_wrapper.lib定义一样(不上图)

2.根据1的提示一样,新建一个CEF_APP项目,这个是主程序,我将celfclient_win.cc改为cef_app.cc,里面的实现也改了不是,这里面实现程序通讯功能。(属性和subProcess一样,我新建另一份,主要是不想和subProcess弄一块,可以加些自己的代码进去)

cef app 1

除了cef_app.cc和subProcess工程是不是很像?^_^。。。。

2-1.cef_app.cc代码直接沿用cefclient_win.cc,先要干掉“message_loop->Run();”,改为“while(1){...;CefDoMessageLoopWork();Sleep(10)}”,在循环里面实现实时监测共享内存的变化(本工程的实际情况)。

m1

2-2.将“int exit_code = CefExecuteProcess(main_args, app, sandbox_info);
        if (exit_code >= 0)
        {
        return exit_code;
        }”干掉,不然经常进不到while循环去,尤其是通过dll调用cef_app.exe的情况!但是仅仅删掉这个不能解决问题,因为这里有控制subProcess的进程部分代码,原代码是调用同名exe以达到启动渲染进程的,我们要手动给它造一个。

在“context->PopulateSettings(&settings);”后加上“
        wchar_t subProcessPath[MAX_PATH] = { 0 };
        GetModuleFileNameW(hInstance, subProcessPath, MAX_PATH);
        *(wcsrchr(subProcessPath, L'\\') + 1) = L'\0';
        const wchar_t *SUB_PROCESS_NAME = L"subProcess.exe";
        wcsncat_s(subProcessPath, MAX_PATH, SUB_PROCESS_NAME,
            wcslen(SUB_PROCESS_NAME));
        cef_string_from_wide(subProcessPath, MAX_PATH, &(settings.browser_subprocess_path));
”;

m2m3

这样改写,subProcess.exe就变成渲染进程,cef_app.exe就是主进程。经过这两处修改,就可以打造一个实时可控的cef程序,很有意思。

哦,差点忘记了,这样直接编译,虽然成功了,但是不能弹窗的。这个要先设置“属性->链接器->系统”,“子系统”=“窗口”;

system

第二就是要改root_window_win.cc的函数“void RootWindowWin::CreateRootWindow(const CefBrowserSettings& settings,bool initially_hidden) ”

create win

这个是读取源码里的资源的标题和类名,但是在我重新新建项目,如果按原代码的话,那肯定会得到空字符串,然后就创建窗口失败!(window_class很重要,为空的话,肯定不行的)

 

不过有点遗憾的是,我不能上传修改好的程序上来,属于公司的资源,暂时不能公开,有空的话,我改好一份精简的再上传。

 

 

 

Linux下编译CEF源码及交叉编译 Linux 编译和交叉编译chromium源码,版本104.0.5112.102 阅读详情

相关推荐

一步步CEF(1)之编译libcef_dll_wrapper.lib

如果要从源码编译的话,估计硬盘和内存都有要求,这个我不想尝试,可以只能下载一份做c++的。(有空可以考虑源码编译的,不过目前这个必要)注意:下面工程为了简单,没有将lib的名字设置为libcef_dll_wrapper! 下载地址:http://opensource.spotify.com/cefbuilds/index.html 最好选择Standard分发版本,如果要调试的话,可以下载...

随风动,心飞翔 8982

CEF-概述和常用功能介绍(GeneralUsage翻译)

1.介绍 https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage.md 翻译来自:cefutil CEF全称Chromium Embedded Framework,是一个基于Google Chromium 的开源项目。Google Chromium项目主要是为Google Chrome应用开发的,而CEF的目标则是为第三方应用提供可嵌入浏览器支持。CEF隔离底层Chromium和Blink的复杂代码,并提供一套产品级稳定的API,发布跟

顺其自然~专栏 1万+

CEF(Chromium Embedded Framework)下载以及编译目的为了后续与DuiLib相结合

是一个开源软件框架,用于在另一个应用程序中嵌入浏览器。这使开发人员能够向其应用程序中添加web浏览功能,并能够使用HTML、CSS和JavaScript创建应用程序的用户界面(或只是其中的一部分)。CEF在LinuxmacOS和Windows上运行。它有许多语言绑定,包括C、C++、Go、Java和Python。ChromiumCEF 1和CEF 3。出现后,CEF 2的开发被放弃。CEF 1是基于的单进程实现。它不再得到积极开发或支持。CEF 3是基于的多进程实现,其性能类似于Google Chrome。

森明帮大于黑虎帮的博客 1万+

cefclient使用总结

CEF_USE_SANDBOX这个宏最好不要定义,似乎会引发一些问题,比如某些系统上不能运行 cefclient_win.cc CEF启动时的命令行写法,command_line->AppendSwitch(“–disable-extensions”); namespace switches搜索这个可以找到很多的命令行设置 settings.log_severity = LOGSEV...

u011393161的博客 1万+

cefClient 项目分析

1、AddTestMenuItems void AddTestMenuItems(CefRefPtr<CefMenuModel> test_menu) { test_menu->AddItem(ID_TESTS_GETSOURCE, "Get Source"); test_menu->AddItem(ID_TESTS_GETTEXT, "Get Text"); test_menu->AddItem(ID_TESTS_WINDOW_NEW, "New Wi...

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 1063

DeepSeek + 番茄小说:AI辅助小说开发最全指南

DeepSeek与番茄小说合作推出AI辅助小说创作系统,通过DeepSeek的文本生成能力(包括情节构建、角色塑造等)结合番茄小说的市场数据,为作者提供从创意到发布的全流程支持。系统包含智能创意生成器、角色设计、章节自动生成等核心模块,采用数据驱动优化策略,支持128K长文本处理和多风格模仿。开发架构采用Python+FastAPI技术栈,提供分层审核机制确保质量。该系统可帮助作者突破创作瓶颈,提升效率,同时提供订阅制、内容分成等多元变现模式。需注意版权问题和原创性保证。

weixin_41445009的博客 1673

libcef(一)编译CEF

下载二进制原码 链接地址 不同系统可选择不同版本,因有需求故我选的是Win32版本(我的系统是Win10,64位)。 想要选择其他版本可点击上图中的Show All Builds字样之后再点击Show More Builds字样可出现更多版本。 我选择的是下图所示版本(当时下载的时候还是最新版本,等想起来截图做笔记已经更新了其他版本)。 关于CEF的版本 Standard Distribution:标准二进制分发。包括头文件,libcef_dll_wrapper源代码,二进制文件,CMake配置文

chen_ling_16的博客 8383

Simulink+Simscape多体仿真:六自由度Stewart平台动力学建模全流程

本文详细介绍了使用Simulink和Simscape Multibody进行六自由度Stewart平台动力学建模的全流程,涵盖从CAD模型导入、运动学逆解计算到实时控制系统的设计。通过MATLAB/Simulink与Simscape的协同工作,实现高保真度的并联机器人仿真,适用于飞行模拟器、精密加工等高精度领域。

r2s3t4的博客 486

CEF小白人系列3-从最简单的二进制项目开始编译cefclient(1)跑起来

首先声明:我会以我的工作要求来继续本系列。包括确定的开发环境,软件版本,主机配置,cef版本,开发语言等。与此不同之处可以去群里讨论,不能照顾到通用还请见谅。不是笔者手懒毕竟时间才是最大的成本。当然如果反应强烈我也会独立开篇予以补充。问题:1.为什么选择编译好的二进制事例项目作为开始,而不是构建编译整个cef,有哪些好处?2.我要选择不同cef版本,不想使用默认最新,怎么做?选择编译好的二进制可以...

守城小轩的技术窝棚 1881

海鸥派OpenEuler开发板实战:从烧写到SSH连接的完整指南

本文提供海鸥派OpenEuler开发板从开箱到SSH远程连接的完整实战指南。详细介绍了基于海思SD3403/SS928芯片的算力开发板系统烧写、存储扩容、网络配置等关键步骤,帮助开发者快速上手这款AI边缘计算设备,并实现高效的远程开发与管理。

ruby5的博客 1121

人形机器人人机交互解决方案(2026完整版)

《人形机器人人机交互解决方案(2026完整版)》摘要 本项目针对2026年人形机器人产业爆发式增长需求,提出了一套完整的人机交互解决方案。方案包含十大核心模块(语音识别、情感识别、手势识别等),采用五层架构设计,实现多模态融合交互,响应时间≤32ms,准确率≥99%。覆盖制造业巡检、家庭服务等10大场景,适配20+主流机型。项目总投资4.1亿元,预期年营收8.2亿元,将申请专利120项,培养专业人才300人。通过技术创新解决当前交互体验生硬、安全可控性不足等痛点,助力我国人形机器人产业实现从"跟跑

随读手记 776

CEF小白人系列7-cefclient的Command-Line命令行

cefclient支持Command-Line模式,因为cef的核心是chromium,所以可以参照chromium来使用。chromium更新列表 感谢http://peter.sh/experiments/chromium-command-line-switches/英文苦手的朋友可以谷歌翻译。我这里就不贴了。众所众知chrome也来源于chromium。所以基本上chrome的命令行参数也使...

守城小轩的技术窝棚 4357

SAP-MM-采购申请字段解析

采购申请抬头以及行项目字段解析

yanzibing99的博客 7305

cef源码 编译基础

#cef源码编译基础 本系列博客,参考众多博客加实践而成的,可以百度cef mp4.这一篇,仅仅是所有的基础大杂烩,而后面的几篇则是正确的如何一步步编译,相对步骤比较简单,比如运行什么,修改什么.但是如果你不了解此篇章的话,可能遇到困难,找到答案也是比较困难的. 这一篇参考的文档比较多,记录的比较详细,是用来解决问题的,但是尽量不要按照此步骤一步步的构建源码.后期会有各版本编译步骤.但是你可以从本...

飞剑神 8020

分析国外几款主流蜜罐产品看欺骗诱捕技术的应用脉络

网络安全的本质是攻防对抗,更本质的其实是人与人心智与技术的全面较量。 欺骗诱捕技术作为攻防对抗技术中比较特殊的技术,能够使防守方更多掌握对抗中的主动权,诱导攻击,迫使攻击者耗费精力的同时,留下丰富的攻击信息。究其本质,欺骗诱捕技术更深层次考验的不止是技术的能力,还有对于攻击者作为人的理解。 国外主流蜜罐产品分析 根据MarketsandMarkets《欺骗技术市场规模、份额和2021年全球市场预测》中提到的欺骗诱捕技术全球主要供应商及产品,我们分析了几款国外主流的蜜罐产品,希望更清晰看到欺骗诱捕技术应

cdyunaq的博客 1307

Motoman机器人离线编程——Motocom32开发简介

欢迎关注Jungle的Motoman机器人离线编程专栏系列文章: Motoman机器人离线编程——Motocom32开发简介 Motoman机器人离线编程——Visio Studio环境配置 Motoman机器人离线编程——Motocom32库函数的使用与封装 Motoman机器人离线编程——Motocom32参考文献及注意事项 Motoman机器人离线编程——MotocomES介绍 ...

冯Jungle的个人博客 8713

CEF编译教程(手把手教学版)

CEF编译教程 1.下载、安装CMake工具: 下载链接:https://cmake.org/download/ 选择cmake-3.15.1-win64-x64.msi 下载直接安装即可 安装之后命令行输入cmake,弹出以下界面说明安装成功 2.下载CEF 下载链接:http://opensource.spotify.com/cefb...

MusicMan 6368

【GameFramework框架内置模块】8、文件系统(File System)

最近好忙,鸽了好久。不能颓废了,继续发力。今天分享的是GF框架的文件系统。首先,引用比较官方的说法:GF的FileSystem虚拟文件系统,使用类似磁盘存储的感念对零散的文件进行集中管理,优化资源加载时产生的内存分配,也可以对资源进行局部片段加载,极大的提升了资源加载的性能。通俗点讲就是,我这个模块就是加载磁盘文件的,优化加载时产生的内存分配。那么,它是怎么优化的呢?

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2452

学习笔记30——DirectX框架

咱们之前在写第一节程序框架的时候说了一点,就是我们会在以后把游戏相关的函数变量啥的给封装成一个类,这也就是咱们今天要做的事情。但是实际上封装的不是一个类,而是两个类,父子俩。为啥呢?因为咱们是为了有些代码的复用,就是在用DirectX进行写游戏程序的时候,有很多的操作无论在哪一个游戏程序中都是一样写的,所以咱们对于这些哪个游戏程序都一样的东西,封装到一个类中:D3DApp,以后每写一个程序都把这个直接复制拿过去用就行了。

yinianbaifaI的博客 1789

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【CEF】Ubuntu18.04 从源码编译CEF记录

从源码编译CEF记录

qihao7ml的博客 2232

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

CEF3 笔记二(常用类的介绍)

CEF3 作为一个基于 Chromium 的嵌入式浏览器框架为开发者提供了几个基本的接口类来完成一些基本功能。 CefApp 类介绍 CefApp: 与进程,命令行参数,代理,资源管理相关的回调类,用于让 CEF3 的调用者们定制自己的逻辑。与该类相关的几个函数如下: int CefExecuteProcess(const CefMainArgs&amp; args, CefRefPtr...

weixin_33713707的博客 274

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

cefclient源码解析

现在,我们知道了cefclient创建一个窗口的大致流程及其设计框架,这只是主进程中的内容,将继续探索。

qq_50764711的博客 1918

2.CEF常用接口类拦截请求回调函数

2 Cef常用接口类介绍 2.1 CefClient 2.2 CefContextMenuHandler右键菜单处理类 2.3 CefDisplayHandler网页显示处理类 2.4 CefDownloadHandler网页下载处理类 2.5 CefDragHandler鼠标拖动到网页处理类 2.6 CefKeyboardHa...

baochunlei1的博客 2221

编译CEF

见:http://note.youdao.com/share/?id=279678779a920fca6f65806bb0226b05&type=note#/ 下载代码: 基于国内环境,直接下载不可能,所以需要使用VPN,这里使用hosts文件的方式。 从此处下载hosts文件:https://github.com/racaljk/hosts。 设置后有些代码的下载还是

weolar的专栏 3216

CEF2 -- 基于CEF的多进程浏览器

如何构建CEF多进程模式 上一篇介绍如何在win32项目中引入CEF。这一篇介绍一下,如何管理CEF的多进程模式,并进行调试。 CEF是一个浏览器控件,进一步说是多组接口集合。嵌入CEF就是实现基于接口的二次开发。但这些接口又比较特殊,因为是开源的,所以可以跟踪、调试、甚至根据自己的需要进行定制、修改。 接口就不做介绍了。下面就从项目由浅入深引入的CEF模块,分块做一下介绍。 CEF的...

moyebaobei1的博客 3054

CEF基础

CEF概述 Chromium Embedded Framework (CEF) 是一个基于Google Chromium 的开源项目。与Google Chromium 不同,CEF致力于Google Chrome项目的发展,CEF可以很方便的将浏览器嵌入到第三方应用。CEF将开发者从底层的Chromium和Blink的复杂代码释放出来,提供了一套稳定的API。CEF大部分特性都已经实现,使得开发者...

急支糖浆的博客 1381
上一篇: 一步步CEF(1)之编译libcef_dll_wrapper.lib
下一篇: RegEnumValueW返回值234,什么情况?
狼风123
博客等级 码龄19年 1058粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值