【发布时间】:2018-11-24 23:47:18
【问题描述】:
在 vulkan 标头 (/usr/include/vulkan/*) 中声明的某些符号未在 vulkan 库 (libvulkan.so.1.1.82) 中定义。 (我在 Ubuntu 18.04 上使用标准的 vulkan 包,libvulkan1 和 libvulkan-dev)
例如:
-
vkCreateInstance在 vulkan 头文件中声明,并在 vulkan 库中定义 -
vkCmdBeginConditionalRenderingEXT在 vulkan 标头中声明,但在 vulkan 库中未定义。
为什么会这样?
$ 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
这样缺失的命令的完整列表是: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,vkDestr oyDebugReportCallbackEXT,vkDestroyDebugUtilsMessengerEXT,vkDestroyIndirectCommandsLayoutNVX,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、vkRegisterObj ectsNVX、vkReleaseDisplayEXT、vkSetDebugUtilsObjectNameEXT、vkSetDebugUtilsObjectTagEXT、vkSetHdrMetadataEXT、vkSubmitDebugUtilsMessageEXT、vkUnregisterObjectsNVX。
【问题讨论】: