首页 > 解决方案 > Vulkan.hpp 在一个系统上编译,但不在另一个系统上

问题描述

我有以下通用功能:

template <typename U>
auto CastVkArray(std::vector<U> &unique_handles)
{
    std::vector<typename U::element_type> handles;
        for(auto &u_handle : unique_handles) handles.push_back(*u_handle);
    return handles;
}

问题是/是,虽然我认为我指示 premake5 在我的项目中使用本地目录下的版本,但它使用的是系统安装的版本。版本不匹配意味着我使用的是旧的 vulkan.hpp 标头,而不是我需要的标头。我暂时使用它来将唯一句柄数组转换为非唯一数组。这段代码在我的桌面(arch linux)上编译得很好,但是在我的笔记本电脑(ubuntu)上我得到了错误:

error: no type named ‘element_type’ in ‘class vk::UniqueHandle<vk::CommandBuffer>’
     std::vector<typename U::element_type> handles;

我使用 premake 5 来生成我的构建环境,并且两个系统之间的脚本没有改变。我检查了我使用的所有库都是相同的版本,特别是,我确保两台计算机之间的 vulkan sdk 是相同的。

我多次删除并重建我的代码以测试编译中潜在的竞争条件(只是为了看看是否有任何变化),错误总是一样的。

我发现的一个区别是,报告的 arch 中 premake 的版本是 5.0.0-dev 但在 ubuntu 上是 5.0.0-alpha14

但是我一直没能在premake的官方github仓库上找到dev版本。

标签: linuxcompiler-errorscompilationvulkanpremake

解决方案


推荐阅读