Vulkan验证层:loader_create_instance_chain:找不到“ vkGetInstanceProcAddr”

问题描述

我遵循this guide创建了一个非常基本的Vulkan程序,由于某种原因,即使从指南中完全复制了code(也没有使用我自己的版本,该版本略有不同并修改为我的需求)启动程序后,我仍然收到以下两个验证层错误:

validation layer: loader_create_instance_chain: Failed to find 'vkGetInstanceProcAddr' in layer 
C:\ProgramData\obs-studio-hook\.\graphics-hook32.dll

validation layer: loader_create_device_chain: Failed to find 'vkGetInstanceProcAddr' in layer 
C:\ProgramData\obs-studio-hook\.\graphics-hook32.dll.  Skipping layer.

而且我仍然无法弄清楚该错误的全部原因,并且我也无法在线找到有关此特定错误的适当信息。

我有一个线索,这很重要-我正在与CLion合作,这意味着我需要一个CMakeLists.txt文件来构建整个项目及其依赖项,并且在指南中他们没有展示如何正确地做。

现在,我的CMakeLists.txt文件看起来像这样:

# This CMakeLists.txt file is not optimized and is probably full of bad practices.
# But it works.
# - Need to make sure no unnecessary binaries are linked
# - Need to make sure local variables like ${PROJECT_NAME} are used wherever they can
cmake_minimum_required(VERSION 3.17)
project(Sandbox)
add_executable(Sandbox main.cpp)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17")

set(glm_DIR "path/to/Libraries/glm/cmake/glm")
find_package(glm REQUIRED)
target_link_libraries(Sandbox glm::glm)

find_package(Vulkan)  # Probably confirmed to be elegant
target_link_libraries(Sandbox Vulkan::Vulkan)

include_directories("path/to/Libraries/stb")
include_directories("path/to/Libraries/tinyobjloader")

set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
# This probably causes the glfw folder to appear in the project window
add_subdirectory("path/to/Libraries/glfw-3.3.2" build)
target_link_libraries(Sandbox glfw)

重要的是要知道我是cmake的新手,可以在Windows 10上运行,并且程序可以正常运行(实际窗口看起来不错,只有控制台在报警)。

如果有人可以帮助您,将不胜感激。 另外,对CMakeLists.txt的任何优化都很棒!

谢谢!

解决方法

这些错误不是由您的应用程序触发的,而是由OBS Studio安装的隐式层触发的。应用程序可以在全局范围内注册自己的隐式层,然后在运行Vulkan应用程序后立即将其加载。如果这些层之一存在缺陷,即使您的应用程序非常好,您也会在自己的应用程序中遇到验证层错误。

禁用这些功能的最简单方法是LunarG SDK中最近发布的Vulkan Configurator。如果没有SDK,则可以通过在1下的注册表中将隐式层的值设置为HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Khronos\Vulkan\ImplicitLayers来禁用隐式层。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...