vulkan 빌드 오류: 'createResultValue'는 'vk'의 멤버가 아닙니다.

vulkan 빌드 오류: 'createResultValue'는 'vk'의 멤버가 아닙니다.

다음과 같이 vulkan_driver.h라는 파일의 메서드를 사용하는 vulkan hpp를 사용하는 프로그램을 컴파일하려고 합니다.

// Evaluate f and if result is not a success throw proper vk exception.
#define CHECK_VK_RESULT(x) do { \
   vk::Result res = vk::Result(x); \
   int tmp = 0; \
   vk::createResultValue(res, tmp, __FILE__ ":" TOSTRING(__LINE__)); \
} while (0)

컴파일할 때 다음 오류가 발생합니다.

[  199s] In file included from /home/abuild/rpmbuild/BUILD/decaf-emu-20220508T212126/src/libgpu/src/vulkan/vulkan_driver.cpp:2:
[  199s] /home/abuild/rpmbuild/BUILD/decaf-emu-20220508T212126/src/libgpu/src/vulkan/vulkan_driver.cpp: In member function 'void vulkan::Driver::initialise(vk::Instance, vk::PhysicalDevice, vk::Device, vk::Queue, uint32_t)':
[  199s] /home/abuild/rpmbuild/BUILD/decaf-emu-20220508T212126/src/libgpu/src/vulkan/vulkan_driver.h:36:8: error: 'createResultValue' is not a member of 'vk'; did you mean 'createResultValueType'?
[  199s]    36 |    vk::createResultValue(res, tmp, __FILE__ ":" TOSTRING(__LINE__)); \
[  199s]       |        ^~~~~~~~~~~~~~~~~
[  199s] /home/abuild/rpmbuild/BUILD/decaf-emu-20220508T212126/src/libgpu/src/vulkan/vulkan_driver.cpp:89:4: note: in expansion of macro 'CHECK_VK_RESULT'
[  199s]    89 |    CHECK_VK_RESULT(vmaCreateAllocator(&allocatorCreateInfo, &mAllocator));
[  199s]       |    ^~~~~~~~~~~~~~~
[  199s] make[2]: *** [src/libgpu/CMakeFiles/libgpu.dir/build.make:647: src/libgpu/CMakeFiles/libgpu.dir/src/vulkan/vulkan_driver.cpp.o] Error 1

이 오류를 어떻게 해결할 수 있나요?

답변1

빌드하려고 할 때 동일한 오류가 발생했습니다.https://github.com/jherico/Vulkan(Ubuntu 22.04 및 Windows 10의 경우)
예를 들어glfw.cpp의 이 줄Ahmed Moselhi가 게시한 것과 동일한 컴파일 오류가 발생합니다.

vulkan.hpp에서 함수의 이름과 서명이 변경된 것을 발견했습니다
.이 커밋은 Github Vulkan-Headers 저장소에 있습니다.)

컴파일이 다시 작동하도록 하려면 함수의 사용법을 변경해야 합니다.

vk::createResultValue(result, rawSurface, "vk::CommandBuffer::begin");

도착하다:

vk::createResultValueType(result, rawSurface);

귀하의 경우 @Ahmed Moselhi의 경우 코드를 다음과 같이 변경해야 합니다.

vk::createResultValueType(res, tmp);

관련 정보