linux - 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版本。
解决方案
推荐阅读
- bash - 没有 Emacs,Bash 命令行编辑在 Emacs 模式下如何工作?
- azure - 移动应用:在 Xamarin.Forms 中使用“Microsoft.Azure.Cosmos”.NET SDK V3 - 跨平台
- c - 结构字段声明顺序在 Rust 中是否重要?
- jquery - 无法正确地将 JSON 对象转换为 HTML
- mysql - VueJs Web 应用程序无法显示记录
- system-verilog - 如何在不使用 systemverilog 约束的情况下随机化 -5 到 21 之间的变量值?
- swift - jonkykong/侧边菜单。无法让选项工作
- javascript - push 不是函数 vuejs
- uuid - MacOS 上的 uuidgen 生成所有大写字母
- http - 为什么 HTTP 版本号同时出现在请求行和状态行中?