Сборка Qt3D под окнами не выполняется из-за того, что Vulkan SDK не найден (но в пути)

Я пытаюсь собрать Qt3D, поскольку он, похоже, больше не поставляется с Qt6 по умолчанию .

Я только что завершил установку на ubuntu, без серьезных проблем (это помогло бы, если бы в инструкции по установке могло быть указано, что требуется vulkan sdk , что было неочевидно, но после установки SDK компиляция завершилась успешно). Я использовал Qt Creator для создания библиотеки.

Я пытаюсь сделать то же самое в Windows, я установил и perl, и vulkan в соответствии с инструкциями по установке выше. После открытия проекта qt3d.pro и попытки собрать его в режиме выпуска я застрял там, где требуется vulkan

      C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance.cpp: In lambda function:
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance.cpp:54:34: error: invalid use of incomplete type 'class QVulkanInstance'
         QVulkanInstance* v = new QVulkanInstance;
                                  ^~~~~~~~~~~~~~~
In file included from 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_p.h:60:7: note: forward declaration of 'class QVulkanInstance'
 class QVulkanInstance;
       ^~~~~~~~~~~~~~~
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance.cpp:60:59: error: invalid use of incomplete type 'class QByteArray'
         if (debug_mode || qgetenv("QT3D_VULKAN_VALIDATION").toInt())
                                                           ^
In file included from C:/Qt/6.0.1/mingw81_64/include/QtGui/qtguiglobal.h:43,
                 from C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance_p.h:54,
                 from 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: note: forward declaration of 'class QByteArray'
 class QByteArray;
       ^~~~~~~~~~
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance.cpp:61:14: error: invalid use of incomplete type 'class QVulkanInstance'
             v->setLayers({ "VK_LAYER_KHRONOS_validation" });
              ^~
In file included from 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_p.h:60:7: note: forward declaration of 'class QVulkanInstance'
 class QVulkanInstance;
       ^~~~~~~~~~~~~~~
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance.cpp:63:15: error: invalid use of incomplete type 'class QVulkanInstance'
         if (!v->create())
               ^~
In file included from 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_p.h:60:7: note: forward declaration of 'class QVulkanInstance'
 class QVulkanInstance;
       ^~~~~~~~~~~~~~~
jom: C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\build-qt3d-Desktop_Qt_6_0_1_MinGW_64_bit-Release\src\render\Makefile.Release [.obj\release\vulkaninstance.o] Error 1

первое сообщение об ошибке error: invalid use of incomplete type 'class QVulkanInstance'подсказывает мне, что библиотека не найдена. Я проверил свои переменные среды, т.е. System variables. Установщик vulkan SDK с именем VULKAN_SDK и VK_SDK_PATHкак также описано в руководстве по началу работы с vulkan , оба указывают на корень папки установки, т.е. C:\Program Files\VulkanSDK\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 к Pathтоже не меняет результата. Я должен сказать здесь, что я запускал некоторые из примеров vulkan, которые работали нормально (например, vkcube.exe).

Я создаю библиотеку (или, скорее, пытаюсь) в Qt Creator (используя Qt версии 6.0.1), и перед попыткой сборки я проверил, что все вышеперечисленные переменные среды доступны во время сборки (проверяя, что эти записи существуют в Projects->Build Environment->Use System Environment->Details).

Я также попытался добавить внешнюю библиотеку в файл qt3d.pro, но я предполагаю, что сценарий сборки не следует изменять и что ошибка скорее связана с моей средой сборки.

Есть предложения, где могла закрасться ошибка?

2 ответа

Я должен был упомянуть, что я использовал комплект MinGW по умолчанию для окон ... переход на MSVC, похоже, сработал, и я могу создать библиотеку сейчас, хотя не уверен, почему mingw не сработал. Может быть, проблема с разрешением? В любом случае, это решение приемлемо для меня, оставив этот ответ здесь на случай, если кто-то наткнется на это в будущем.

Решение:

скопируйте папку vulkan из пути установки Vulkan (C:\Dev\Vulkan\1.2.170.0\Include\vulkan) в путь включения Qt (C:\Dev\Qt\6.0.3\mingw81_64\include)

Другие вопросы по тегам