Chromium编译错误:Could not convert from const float to base::span

Chromium编译错误记录

  • Chromium默认用Clang编译,可通过如下命令改为用gcc/g++编译。
gn gen out/Default --args='is_clang=false'
  • 采用gcc/g++编译chromium时,本文为Chromium67(g++/gcc,5.4.1),会遇到如下错误
could not convert '(const float*)(& quad->viz::TextureDrawQuad::vertex_opacity)' from 'const float*' to 'base::span<const float>'
  • 定位到源码中 src/services/viz/public/cpp/composting/quads_struct_traits.h
static base::span<const float> vertex_opacity(const viz::DrawQuad& input) {
    const viz::TextureDrawQuad* quad =
        viz::TextureDrawQuad::MaterialCast(&input);
    return quad->vertex_opacity;
  }
  • 从源码上看,没有什么问题。base::span是个模板,vertex_opacity是一个数组。导致,这个问题的原因,似乎是gcc/g++在这种情况时,无法解析正确的构造函数,也就是说gcc/g++,不知道怎么在两个类型间转换。
  • 修改:综上所述,只要显式的告诉gcc/g++,两个类型间如何转换就就好了。
static base::span<const float> vertex_opacity(const viz::DrawQuad& input) {
    const viz::TextureDrawQuad* quad =
        viz::TextureDrawQuad::MaterialCast(&input);
    // Change code
    return base::span<const float>(quad->vertex_opacity); 
  }
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxc024000/article/details/79975369
文章标签: chromium build error gcc
个人分类: Android
相关热词: chromium
上一篇Linux Chromium源码编译
下一篇忘记密码找回办法
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭