由于找不到Vulkan SDK(但在路径中),在windows下构建Qt3D失败

由于找不到Vulkan SDK(但在路径中),在windows下构建Qt3D失败,windows,qt,vulkan,qt3d,qt6,Windows,Qt,Vulkan,Qt3d,Qt6,我正试图建立它似乎不再 我刚刚在ubuntu上完成了安装,没有出现重大问题(如果安装说明中提到需要,这会有所帮助,这并不明显,但在安装SDK之后,编译成功完成)。我使用Qt Creator来构建库 我正试图在windows上做同样的事情,我按照上面的安装说明安装了perl和vulkan。在打开qt3d.pro项目并尝试在发布模式下构建它之后,我陷入了vulkan需要的位置 C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\Src\render\surface

我正试图建立它似乎不再

我刚刚在ubuntu上完成了安装,没有出现重大问题(如果安装说明中提到需要,这会有所帮助,这并不明显,但在安装SDK之后,编译成功完成)。我使用Qt Creator来构建库

我正试图在windows上做同样的事情,我按照上面的安装说明安装了perl和vulkan。在打开qt3d.pro项目并尝试在发布模式下构建它之后,我陷入了vulkan需要的位置

C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\Src\render\surfaces\vulkaninstance.cpp:在lambda函数中:
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\Src\render\surfaces\vulkaninstance.cpp:54:34:错误:无效使用不完整的类型“class QVulkanInstance”
QVulkanInstance*v=新的QVulkanInstance;
^~~~~~~~~~~~~~~
在C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\Src\render\surfaces\vulkaninstance.cpp:40中包含的文件中:
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\Src\render\surfaces\vulkaninstance\u p.h:60:7:注意:“类QVulkanInstance”的正向声明
类qvulkan实例;
^~~~~~~~~~~~~~~
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\Src\render\surfaces\vulkaninstance.cpp:60:59:错误:无效使用不完整的类型“class QByteArray”
if(debug_mode | | | qgetenv(“QT3D_VULKAN_VALIDATION”).toInt())
^
在C:/Qt/6.0.1/mingw81_64/include/QtGui/qtguiglobal.h:43中包含的文件中,
从C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\Src\render\surfaces\vulkaninstance\u p.h:54,
来自C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\Src\render\surfaces\vulkaninstance.cpp:40:
C:/Qt/6.0.1/mingw81_64/include/QtCore/qglobal.h:1259:7:注:“类QByteArray”的正向声明
QByteArray类;
^~~~~~~~~~
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\Src\render\surfaces\vulkaninstance.cpp:61:14:错误:无效使用不完整的类型“class QVulkanInstance”
v->setLayers({“VK_LAYER_KHRONOS_validation”});
^~
在C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\Src\render\surfaces\vulkaninstance.cpp:40中包含的文件中:
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\Src\render\surfaces\vulkaninstance\u p.h:60:7:注意:“类QVulkanInstance”的正向声明
类qvulkan实例;
^~~~~~~~~~~~~~~
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\Src\render\surfaces\vulkaninstance.cpp:63:15:错误:无效使用不完整的类型“class QVulkanInstance”
如果(!v->create())
^~
在C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\Src\render\surfaces\vulkaninstance.cpp:40中包含的文件中:
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\Src\render\surfaces\vulkaninstance\u p.h:60:7:注意:“类QVulkanInstance”的正向声明
类qvulkan实例;
^~~~~~~~~~~~~~~
jom:C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\build-qt3d-Desktop\u Qt\u 6\u 0\u 1\u MinGW\u 64\u bit-Release\src\render\Makefile.Release[.obj\Release\vulkancinstance.o]错误1
第一条错误消息
error:对不完整类型'class qvulkancinstance'的无效使用
向我表明找不到库。我检查了我的环境变量,即
系统变量
。vulkan SDK安装程序创建了两个环境变量,分别名为
vulkan_SDK
VK_SDK_路径
,它们都指向安装文件夹的根,即
C:\Program Files\vulkan SDK\1.2.162.1
。我已经检查了我的
路径
变量,并且还添加了bin文件夹
C:\Program Files\VulkanSDK\1.2.162.1\bin
。即使这些条目可用,我仍然会收到与上面相同的错误消息。将
C:\Program Files\VulkanSDK\1.2.162.1\Include
C:\Program Files\VulkanSDK\1.2.162.1\Lib
添加到
路径中也不会更改结果。我应该在这里说,我运行了一些运行良好的vulkan示例(例如vkcube.exe)

我正在Qt Creator(使用Qt版本6.0.1)中构建库(或者更确切地说是尝试构建库),在尝试构建之前,我已经检查了上述所有环境变量在构建过程中是否可用(通过检查这些条目是否存在于
项目->构建环境->使用系统环境->详细信息中)

我还尝试将外部库添加到qt3d.pro文件中,但我认为不应修改构建脚本,错误与我的构建环境有关


有没有关于错误可能潜入的建议?

我应该提到,我在windows上使用了默认的工具包MinGW。。。切换到MSVC似乎起了作用,我现在能够构建这个库,但不确定mingw为什么不起作用。也许是许可问题?无论如何,这个解决方案对我来说是可以接受的,把这个答案留在这里,以防将来有人偶然发现。

解决方案:

将vulkan文件夹从vulkan安装路径(C:\Dev\vulkan\1.2.170.0\Include\vulkan)复制到Qt包含路径(C:\Dev\Qt\6.0.3\mingw81\u 64\Include)