当前位置: 首页 > news >正文

Avalonia使用CefNet 实现web-browsers(基于CentOS8 Arm64架构)

    • 前提

目标系统为CentOS8,CPU架构是arm64,因此CefGlue等都无法使用。参考https://github.com/AvaloniaCommunity/awesome-avalonia#web-browsers

    • 使用CefNet

参考https://github.com/CefNet/CefNet

    • 部署

1)执行报错System.DllNotFoundException

Unhandled exception. System.DllNotFoundException: Unable to load shared library 'libdl' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibdl: cannot open shared object file: No such file or directory
   at CefNet.NativeMethods.dlopen(String path, Int32 mode)
   at CefNet.CefNetApplication.Initialize(String path, CefSettings settings)

解决方式:参考https://github.com/CefNet/CefNet/issues/121

执行命令查找libdl.so,然后创建软连接libdl.so,此处你的安装目录是lib就 /usr/lib/libdl.so,是lib64就 /usr/lib64/libdl.so

[root@localhost ~]# locate libdl.so
/usr/lib64/libdl.so.2
# sudo ln -sf /usr/lib64/libdl.so.2 /usr/lib64/libdl.so

2)执行报错Can't load '/etc/opt/cef/Release/libcef.so',

解决方案:

1.添加环境变量,此方法需要每次开启程序之前都要执行一次

 export LD_PRELOAD=你的cef文件夹路径/Release/libcef.so:$LD_PRELOAD

例如:我的命令如下

 export LD_PRELOAD=/etc/opt/cef/Release/libcef.so:$LD_PRELOAD

2.修改 ~/.bashrc文件,在文件末尾添加export LD_PRELOAD=/etc/opt/cef/Release/libcef.so:$LD_PRELOAD,就不用每次都执行一遍命令了

 ~/.bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
export LD_PRELOAD=/etc/opt/cef/Release/libcef.so:$LD_PRELOAD
                                                                                 

3)执行报错Invalid file descriptor to ICU data received

解决方案:

将 cef/Resources/icudtl.dat 文件复制到cef/Release/ 目录下

4)如果是Avalonia项目,可能会报Default font family name can't be null or empty这个错误,错误信息如下:

Unhandled exception. System.InvalidOperationException: Default font family name can't be null or empty.
   at Avalonia.Media.FontManager..ctor(IFontManagerImpl platformImpl) in /_/src/Avalonia.Visuals/Media/FontManager.cs:line 33
   at Avalonia.Media.FontManager.get_Current() in /_/src/Avalonia.Visuals/Media/FontManager.cs:line 53
   at Avalonia.Media.TextFormatting.TextCharacters.TryGetRunProperties(ReadOnlySlice`1 text, Typeface typeface, Typeface defaultTypeface, Int32& count) in /_/src/Avalonia.Visuals/Media/TextFormatting/TextCharacters.cs:line 129
   at Avalonia.Media.TextFormatting.TextCharacters.CreateShapeableRun(ReadOnlySlice`1 text, TextRunProperties defaultProperties) in /_/src/Avalonia.Visuals/Media/TextFormatting/TextCharacters.cs:line 62

解决方案见:文章中的3.运行报错部分

相关文章:

  • 做图用哪个素材网站/新浪体育最新消息
  • 网站开发 设计文档/seo关键词优化要多少钱
  • 中国民航机场建设集团公司网站/aso优化贴吧
  • 多企业宣传网站建设/网络服务器搭建
  • 做视频网站服务器要求/网站开发的步骤
  • 云主机建网站教程/企业qq官网
  • 蓝桥杯C/C++百校真题赛(3期)Day4(卡片)
  • MyBatis 详解 -- 环境搭建、查询操作
  • 机器学习:公式推导与代码实现-监督学习集成模型
  • RabbitMQ 部署及配置详解(集群部署)
  • DTO 与 PO的相互转换
  • 【Linux编译器】
  • 转换函数和运算符类
  • 【8】SCI易中期刊推荐——图像处理领域(中科院4区)
  • 聊聊模板方法模式?
  • 【学习】计算机系统硬件和数据结构
  • Vue3+Element-Plus 实现点击左侧菜单时显示不同内容组件展示在Main区域功能
  • Vuejs设计与实现11-编译优化与同构渲染