首页 > 解决方案 > 标准 linux vulkan 库中缺少 vulkan 符号?

问题描述

vulkan 标头 ( ) 中声明的某些符号/usr/include/vulkan/*未在 vulkan 库 ( libvulkan.so.1.1.82) 中定义。(我在 Ubuntu 18.04 上使用标准的 vulkan 包,libvulkan1并且libvulkan-dev

例如:

这是为什么?

$ cat > t.cc 
#include <vulkan/vulkan.h>
int main() {
    { constexpr auto x = vkCmdBeginConditionalRenderingEXT; (void)x; }
}
^D
$ g++ t.cc -lvulkan
/tmp/cczuSwiY.o: In function `main':
t.cc:(.text+0x7): undefined reference to `vkCmdBeginConditionalRenderingEXT'
collect2: error: ld returned 1 exit status

The full list of such missing commands is: vkCmdBeginConditionalRenderingEXT, vkCmdBeginDebugUtilsLabelEXT, vkCmdBeginRenderPass2KHR, vkCmdDebugMarkerBeginEXT, vkCmdDebugMarkerEndEXT, vkCmdDebugMarkerInsertEXT, vkCmdDrawIndexedIndirectCountAMD, vkCmdDrawIndexedIndirectCountKHR, vkCmdDrawIndirectCountAMD, vkCmdDrawIndirectCountKHR, vkCmdEndConditionalRenderingEXT, vkCmdEndDebugUtilsLabelEXT, vkCmdEndRenderPass2KHR, vkCmdInsertDebugUtilsLabelEXT, vkCmdNextSubpass2KHR, vkCmdProcessCommandsNVX, vkCmdPushDescriptorSetKHR, vkCmdPushDescriptorSetWithTemplateKHR, vkCmdReserveSpaceForCommandsNVX, vkCmdSetCheckpointNV, vkCmdSetDiscardRectangleEXT , vkCmdSetSampleLocationsEXT, vkCmdSetViewportWScalingNV, vkCmdWriteBufferMarkerAMD, vkCreateDebugReportCallbackEXT, vkCreateDebugUtilsMessengerEXT, vkCreateIndirectCommandsLayoutNVX, vkCreateObjectTableNVX,vkCreateRenderPass2KHR, vkCreateValidationCacheEXT, vkDebugMarkerSetObjectNameEXT, vkDebugMarkerSetObjectTagEXT, vkDebugReportMessageEXT, vkDestroyDebugReportCallbackEXT, vkDestroyDebugUtilsMessengerEXT, vkDestroyIndi​​rectCommandsLayoutNVX, vkDestroyObjectTableNVX, vkDestroyValidationCacheEXT, vkDisplayPowerControlEXT, vkGetFenceFdKHR, vkGetMemoryFdKHR, vkGetMemoryFdPropertiesKHR, vkGetMemoryHostPointerPropertiesEXT, vkGetPastPresentationTimingGOOGLE, vkGetPhysicalDeviceExternalImageFormatPropertiesNV, vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, vkGetPhysicalDeviceMultisamplePropertiesEXT, vkGetPhysicalDeviceSurfaceCapabilities2EXT, vkGetPhysicalDeviceSurfaceCapabilities2KHR, vkGetPhysicalDeviceSurfaceFormats2KHR, vkGetQueueCheckpointDataNV, vkGetRefreshCycleDurationGOOGLE, vkGetSemaphoreFdKHR, vkGetShaderInfoAMD、vkGetSwapchainCounterEXT、vkGetSwapchainStatusKHR, vkGetValidationCacheDataEXT, vkImportFenceFdKHR, vkImportSemaphoreFdKHR, vkMergeValidationCachesEXT, vkQueueBeginDebugUtilsLabelEXT, vkQueueEndDebugUtilsLabelEXT, vkQueueInsertDebugUtilsLabelEXT, vkRegisterDeviceEventEXT, vkRegisterDisplayEventEXT, vkRegisterObjectsNVX, vkReleaseDisplayEXT, vkSetDebugUtilsObjectNameEXT, vkSetDebugUtilsObjectTagEXT, vkSetHdrMetadataEXT, vkSubmitDebugUtilsMessageEXT, vkUnregisterObjectsNVX.vkSubmitDebugUtilsMessageEXT,vkUnregisterObjectsNVX。vkSubmitDebugUtilsMessageEXT,vkUnregisterObjectsNVX。

标签: linuxvulkan

解决方案


每个LoaderAndLayerInterface.md

Windows、Linux、Android 和 MacOS 上的加载程序库将导出所有核心 Vulkan 和所有适当的窗口系统接口 (WSI) 扩展。

这意味着它可能\不导出非核心非“适当”-WSI 命令。


推荐阅读