VulkanSDK Demos vkcube 编译失败

操作系统: Windows 11 23H2

Vulkan 版本: 1.3.2.280.0

Visual Studio 版本: 2022

在VulkanSDK/Demos目录下存在一个demo solution,其中包含两个project, vkcube和vkcubepp,两个分别为C语言和C++写的示例程序, 但是直接编译这两个project时会编译失败,报了以下错误:

fatal error C1189: #error:  To use volk, you need to define VK_NO_PROTOTYPES before including vulkan.h

根据提示这是由于两个project使用了volk库导致的,在使用volk库时,如果你include了vulkan.h, 必须在include声明之前define VK_NO_PROTOTYPES.

#define VK_NO_PROTOTYPES
#include <vulkan/vulkan.h>
#define VOLK_IMPLEMENTATION
#include "volk.h"

添加第一行的宏定义之后vkcube可以正常编译了,但是vkcubepp仍然报错:

vulkan_structs.hpp(67568,35): error C2589: '(': illegal token on right side of '::'
vulkan_structs.hpp(67568,30): error C2062: type 'unknown-type' unexpected

这是由于windows的系统头文件与C++标准库的头文件同时存在min这个函数, 因此发生了冲突,在cube.cpp里添加如下宏定义禁止min/max函数即可:

#define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 1
#define VULKAN_HPP_NO_EXCEPTIONS
#define VULKAN_HPP_TYPESAFE_CONVERSION

#define NOMINMAX
#define VK_NO_PROTOTYPES
#include <vulkan/vulkan.hpp>

#define VOLK_IMPLEMENTATION
#include "volk.h"

添加第5, 6行的宏定义之后再次编译即可.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值