调用vkCreateInstance()时出现异常错误求助
Vulkan vkCreateInstance()崩溃问题排查:nvoglv64.dll存在但加载失败
问题描述
调用vkCreateInstance()时,验证层返回如下错误信息,程序随后崩溃:
validation layer: windows_get_device_registry_files: GUID for 2 is not SoftwareComponent skipping validation layer: Searching for ICD drivers named .\nvoglv64.dll validation layer: Build ICD instance extension list
环境信息:Windows 11系统,NVIDIA Game Ready驱动版本527.56,已确认nvoglv64.dll存在于NVIDIA驱动文件中。
加载器调试信息如下:
INFO | DRIVER: windows_get_device_registry_entry: Device ID(1) Does not contain a value for "VulkanExplicitLayers" INFO | DRIVER: windows_get_device_registry_entry: Device ID(1) Does not contain a value for "VulkanExplicitLayers" DRIVER: Checking for Driver Manifest files in Registry at SOFTWARE\Khronos\Vulkan\Drivers DRIVER: Found no registry files in SOFTWARE\Khronos\Vulkan\Drivers DRIVER: Found ICD manifest file C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_f52c4b8723f8dd33\nv-vk64.json, version "1.0.0" DRIVER: Checking for Driver Manifest files in Registry at SOFTWARE\Khronos\Vulkan\Drivers DRIVER: Found no registry files in SOFTWARE\Khronos\Vulkan\Drivers DRIVER: Found ICD manifest file C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_f52c4b8723f8dd33\nv-vk64.json, version "1.0.0" DRIVER: Checking for Driver Manifest files in Registry at SOFTWARE\Khronos\Vulkan\Drivers DRIVER: Found no registry files in SOFTWARE\Khronos\Vulkan\Drivers DRIVER: Found ICD manifest file C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_f52c4b8723f8dd33\nv-vk64.json, version "1.0.0" INFO | DRIVER: windows_get_device_registry_entry: Device ID(1) Does not contain a value for "VulkanExplicitLayers" validation layer: windows_get_device_registry_files: GUID for 2 is not SoftwareComponent skipping DRIVER: Checking for Driver Manifest files in Registry at SOFTWARE\Khronos\Vulkan\Drivers DRIVER: Found no registry files in SOFTWARE\Khronos\Vulkan\Drivers DRIVER: Found ICD manifest file C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_f52c4b8723f8dd33\nv-vk64.json, version "1.0.0" validation layer: Searching for ICD drivers named .\nvoglv64.dll validation layer: Build ICD instance extension list
解决方案
- 检查ICD manifest文件的路径配置:打开找到的
nv-vk64.json文件,查看其中library_path字段的取值。如果是相对路径.\nvoglv64.dll,加载器会从程序运行目录查找,而该DLL实际位于C:\Windows\System32或NVIDIA驱动目录,需要将此字段修改为绝对路径(比如C:\Windows\System32\nvoglv64.dll),或者确保程序运行时能访问到该DLL所在目录。 - 修复系统PATH环境变量:将
C:\Windows\System32添加到系统PATH的靠前位置,或者直接添加NVIDIA驱动的DLL存放目录(通常为C:\Program Files\NVIDIA Corporation\Display.NvContainer\plugins\LocalSystem),确保加载器能全局定位到该DLL。 - 重新安装并注册Vulkan组件:以管理员权限运行NVIDIA驱动安装程序,选择自定义安装并勾选执行清洁安装,确保驱动中的Vulkan ICD组件完全覆盖并正确注册到系统。安装完成后,运行
vulkaninfo工具验证是否能正常识别NVIDIA Vulkan设备。 - 简化验证层配置:暂时禁用所有非必要的验证层,仅保留核心的
VK_LAYER_KHRONOS_validation层,排除因多余验证层配置导致的加载冲突。 - 提升程序运行权限:以管理员权限启动程序,避免因系统权限限制无法访问DriverStore或系统目录中的驱动文件。
内容的提问来源于stack exchange,提问作者Liyuu_
相关产品推荐
相关产品推荐

