提问人:StarFox 提问时间:10/11/2023 最后编辑:genpfaultStarFox 更新时间:10/11/2023 访问量:98
使用 vkSetDebugUtilsObjectNameEXT() 时无法解析的外部符号?[复制]
Unresolved external symbol when using vkSetDebugUtilsObjectNameEXT()? [duplicate]
问:
好吧,我已经更改了一些旧函数,并且在关闭 Validationlayers 后告诉我我不删除/清除资源,现在尝试设置 DebugUtilsObjectName 函数以更容易找到资源;
void DebugUtilsObjectName(uint64_t objectHandle, const char* pObjectName, VkDevice device, VkObjectType objectType) {
VkDebugUtilsObjectNameInfoEXT DebugUtilsObjectNameInfo{};
DebugUtilsObjectNameInfo.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
DebugUtilsObjectNameInfo.pNext = nullptr;
DebugUtilsObjectNameInfo.objectType = objectType;
DebugUtilsObjectNameInfo.objectHandle = objectHandle;
DebugUtilsObjectNameInfo.pObjectName = pObjectName;
vkSetDebugUtilsObjectNameEXT(device, &DebugUtilsObjectNameInfo);
}
我最终得到:
我试着通读了它的文档,但找不到任何可能对我有帮助的突出内容
答:
0赞
Erel
10/11/2023
#1
Vulkan 标头仅公开扩展函数的原型,前提是您没有添加 .它不提供实际功能。这是为了允许您覆盖诸如 or 之类的内容(在这种情况下,您还需要手动加载核心函数)。VK_NO_PROTOTYPES
VK_DEFINE_NON_DISPATCHABLE_HANDLE
VK_USE_64_BIT_PTR_DEFINES
您必须使用例如函数指针或设备功能指针手动加载扩展函数指针(有关差异,请参阅此帖子):vkGetInstanceProcAddr
vkGetDeviceProcAddr
auto* pfn = reinterpret_cast<PFN_vkSetDebugUtilsObjectNameEXT>(vkGetInstanceProcAddr(instance, "vkSetDebugUtilsObjectNameEXT"));
评论