2016-5-31 问题及解决

1.执行linux版本时,碰到官方默认发布的cef3二进制包,不支持在动态库中初始化cef3
现象:启动时报一下错误->
FATAL:content_main_runner.cc(662)] Check failed: base::allocator::IsAllocatorInitialized()
原因:
在共享库中初始化cef3时程序不加载libcef.so,这涉及到cef3的内存管理框架,不能使用手动加载的方式解决
解决方法:
1)项目启动前使用以下终端命令配置运行环境
export LD_PRELOAD=/path/to/libcef.so
预加载libcef.so,然后再执行我们的程序
缺点:不够人性化,需要安装时候调整环境变量
优点:实施简单,没有附加的项目调整

2)修改cef3的内存管理框架(只需修改一些配置),重新编译cef3,代价是降低程序的执行效率
缺点:降低性能,编译难度大,资料少,不利于和cef3官方同步
优点:项目更独立,可以避免一些项目结构的调整

3)放弃动态库的形式初始化cef3,采用主程序形式初始化cef3
缺点:
项目结构需要大调整
需要手动加载coreclr
项目主次对换,原项目以coreclr为主(提供原生.net core开发体验),cef3为附属(更独立),现以cef3为主(无法脱离),coreclr为附属(.net core开发体验降低)
优点:解决coreclr的终端启动问题,不需要做命令行窗口转接,coreclr可脱离

状态:
2016-6-4
已采用方案3解决此问题

posted @ 2016-10-17 17:52  宝宝抱抱  阅读(264)  评论(0编辑  收藏  举报