Here is a little code snippet that I have. The problem is that I want to load the "createDebugUtilsMessengerEXT" function. But I get a linking error:
LNK2001: unresolved external symbol "class vk::DispatchLoaderDynamic vk::defaultDispatchLoaderDynamic".
What exactly am I doing wrong?
Also, I made this code based on this example
#include <vulkan.hpp>
#define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 1
#ifdef VALIDATION_LAYERS
VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
VkDebugUtilsMessageSeverityFlagsEXT messageType,
const VkDebugUtilsMessengerCallbackDataEXT* pCallBackData,
void* pUserData)
{
std::cerr << "Validation: " << pCallBackData->pMessage << std::endl;
return VK_FALSE;
}
#endif
vk::Instance createInstance()
{
...
#ifdef VALIDATION_LAYERS
debugMessengerCreateInfo_ = vk::DebugUtilsMessengerCreateInfoEXT({},
vk::DebugUtilsMessageSeverityFlagBitsEXT::eWarning | vk::DebugUtilsMessageSeverityFlagBitsEXT::eError,
vk::DebugUtilsMessageTypeFlagBitsEXT::eValidation | vk::DebugUtilsMessageTypeFlagBitsEXT::ePerformance,
debugCallback);
#endif
vk::Instance instance = vk::createInstance(instanceCreateInfo);
#ifdef VALIDATION_LAYERS
VULKAN_HPP_DEFAULT_DISPATCHER.init(instance);
debugMessenger_ = instance.createDebugUtilsMessengerEXT(debugMessengerCreateInfo_);
#endif
You need to
#define VULKAN_HPP_DISPATCH_LOADER_DYNAMICbefore you load Vulkan.hpp, and use the macroVULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGEafter. From vulkan.hpp:So the start of your program should look like: