Hey all! I have a basic question for an open source project I’m working on that uses vulkan. You can find the code HERE. In this project, I am using Swift and the Clang compiler and ran into a linking issue for extension specific functions in the compiler. The errors are shown below:
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/AccelerationStructure.swift:7: error: undefined reference to 'vkCreateAccelerationStructureNV'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/AccelerationStructure.swift:10: error: undefined reference to 'vkGetAccelerationStructureHandleNV'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/AccelerationStructure.swift:13: error: undefined reference to 'vkDestroyAccelerationStructureNV'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Device.swift:19: error: undefined reference to 'vkGetFenceFdKHR'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Device.swift:29: error: undefined reference to 'vkImportFenceFdKHR'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Device.swift:32: error: undefined reference to 'vkWaitSemaphoresKHR'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Device.swift:35: error: undefined reference to 'vkSignalSemaphoreKHR'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Device.swift:38: error: undefined reference to 'vkImportSemaphoreFdKHR'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Device.swift:44: error: undefined reference to 'vkGetCalibratedTimestampsEXT'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Device.swift:58: error: undefined reference to 'vkGetPipelineExecutablePropertiesKHR'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Device.swift:63: error: undefined reference to 'vkGetPipelineExecutableStatisticsKHR'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Device.swift:67: error: undefined reference to 'vkGetPipelineExecutableInternalRepresentationsKHR'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Device.swift:74: error: undefined reference to 'vkGetMemoryFdKHR'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Device.swift:79: error: undefined reference to 'vkGetMemoryFdPropertiesKHR'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Device.swift:84: error: undefined reference to 'vkGetMemoryHostPointerPropertiesEXT'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Device.swift:109: error: undefined reference to 'vkGetImageViewHandleNVX'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Device.swift:112: error: undefined reference to 'vkGetAccelerationStructureMemoryRequirementsNV'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Device.swift:115: error: undefined reference to 'vkBindAccelerationStructureMemoryNV'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Fence.swift:13: error: undefined reference to 'vkRegisterDeviceEventEXT'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Fence.swift:16: error: undefined reference to 'vkRegisterDisplayEventEXT'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Image.swift:13: error: undefined reference to 'vkGetImageDrmFormatModifierPropertiesEXT'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/PhysicalDevice.swift:23: error: undefined reference to 'vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/PhysicalDevice.swift:26: error: undefined reference to 'vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/PhysicalDevice.swift:30: error: undefined reference to 'vkGetPhysicalDeviceCooperativeMatrixPropertiesNV'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/PhysicalDevice.swift:32: error: undefined reference to 'vkGetPhysicalDeviceCooperativeMatrixPropertiesNV'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Pipeline.swift:10: error: undefined reference to 'vkGetShaderInfoAMD'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Pipeline.swift:13: error: undefined reference to 'vkGetRayTracingShaderGroupHandlesNV'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Pipeline.swift:16: error: undefined reference to 'vkCompileDeferredNV'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/PipelineCache.swift:15: error: undefined reference to 'vkCreateRayTracingPipelinesNV'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/Semaphore.swift:11: error: undefined reference to 'vkGetSemaphoreCounterValueKHR'
witch/Desktop/NYON/Sources/NYON/Vulkan/ValidationCache.swift:7: error: undefined reference to 'vkCreateValidationCacheEXT'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/ValidationCache.swift:10: error: undefined reference to 'vkMergeValidationCachesEXT'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/ValidationCache.swift:13: error: undefined reference to 'vkGetValidationCacheDataEXT'
/home/underswitch/Desktop/NYON/Sources/NYON/Vulkan/ValidationCache.swift:16: error: undefined reference to 'vkDestroyValidationCacheEXT'
clang-7: error: linker command failed with exit code 1 (use -v to see invocation)
<unknown>:0: error: link command failed with exit code 1 (use -v to see invocation)
Right now, I am only linking with the “vulkan” library from the compiler for the vulkan.h file. I am using other functions that are working and linking fine, it seems to be an issue with extension specific functions and I have literally no idea why. Any ideas? And one more note if you look at the code some specific extension functions / structures are working totally fine, it is just a very odd issue. Also to note I am using the newest vulkan 1.1.130 SDK on ubuntu. I have a Intel i7 8700 CPU and a GTX 1050Ti 4GB as my GPU.