cef库动态编译

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012532305/article/details/51151463



近段时间需要研究浏览器内核,首选主流的chrominum内核,但chrominum内核源代码据说有十几个G,想想觉得压力山大;退而求其次,研究CEF
CEF即为chorminum内嵌框架,下载下来果断研究;从https://cefbuilds.com/ 上不翻墙是下载不了的,只好去其他论坛下载;下载下来,解压主要有三个工程:
cefsample-----主要是示例工程;
cefclient------展示CEF的强撼功能;
libcef_dll_wrapper------用来协助调用dll的一个静态库,这是我们本篇讨论的主角,按CEF官方的文档说明,这三个工程都是静态编译的,也就是采用MT编译的
但我们工程中大部分都是MD的,这可如何是好?不可能为了引进一个CEF库,要把整个工程更改配置吧;就算能更改,更改完是否编译的过也是个问题,所以现在就着力研究
把上面的工程实现MD编译,上面的工程要想正确调用CEF,都是主要依赖libcef.lib(这个是动态库),libcef_dll_wrapper(这个是静态库),网上也有人说直接将   
libcef_dll_wrapper工程中代码生成改成MD,将警告视为错误选项关掉就可以编译成功,问题是编译是编译成功了,你要怎么用呢,整个工程中没有一个导出的接口或类,你把
库加进工程,你用一个试试,一堆的无法解析啊有木有? 所以要想真正实现动态调用cef,你必须对libcef_dll_wrapper工程进行改装,将其改装为一个动态DLL工程;
改装方法我就不说了,自己加一个dllmain,接下来就是关键的一步,你将你要用到的CEF功能定义好,然后在libcef_dll_wrapper中将这些功能导出,编译时要将libcef.lib作为导入库链接进去,编译成功生成动态的libcef_dll_wrapper(只有几十KB大小)跟libcef_dll_wrapper.dll,然后再导入你的主工程中,主工程是MD选项,编译,成功,一个浏览器就出来了。上面只是把过程跟步骤说了,在我的电脑 上我用的是vs2010环境,cef用的是3.2272版本,以下是我编译过的库的下载链接,下载下来,解压libcef_dll下有个mmexport.h,这里面是我导出的函数,还有一个TestCEF的测试工程:测试时记得把libcef.dll, libcef_dll_wrapper.dll, locals目录,还有一堆*.pak文件 icudtl.dat文件拷贝到EXE目录下.
下载链接:http://download.csdn.net/detail/u012532305/9491081




猜你喜欢

转载自blog.csdn.net/u012532305/article/details/51151463
CEF