C++ 定义宏以加载vulkan函数指针时未声明的标识符
我正试着让vulkan和cmake一起运行。我目前正在尝试动态加载 vulkan函数指针使用 在这里,他们使用一个宏的构造,使从vulkan加载程序加载所有函数指针变得更容易 现在我在以这种特殊方式加载指针时遇到了一些问题,我得到了3个可能密切相关的错误:C++ 定义宏以加载vulkan函数指针时未声明的标识符,c++,vulkan,C++,Vulkan,我正试着让vulkan和cmake一起运行。我目前正在尝试动态加载 vulkan函数指针使用 在这里,他们使用一个宏的构造,使从vulkan加载程序加载所有函数指针变得更容易 现在我在以这种特殊方式加载指针时遇到了一些问题,我得到了3个可能密切相关的错误: error C2065: 'vkGetInstanceProcAddr': undeclared identifier error C2065: 'PFN_vkGetInstanceProcAddr': undeclared identifi
error C2065: 'vkGetInstanceProcAddr': undeclared identifier
error C2065: 'PFN_vkGetInstanceProcAddr': undeclared identifier
error C2146: syntax error: missing ';' before identifier 'GetProcAddress'
在list_vulkan_functions.inl(5,1)中抛出所有
我觉得奇怪的是,在这个示例中,它们在list_vulkan_functions.inl中没有包含任何文件,所以在我看来,它抛出了“未声明标识符”的错误,这怎么可能工作?我见过很多这种方法的例子,所以我一定是做错了什么,但我似乎不知道是什么
列出vulkan函数。inl
\ifndef导出的函数
#定义导出的函数(函数)
#恩迪夫
导出的Vukan_函数(vkGetInstanceProcAddr)/确保在Vukan_测试
命名空间中声明了load_vukan_函数
函数,并且Vukan_函数.h
包含在Vukan_库.cpp
中
这里的关键是您必须将LOAD_函数的结果
分配给extern
变量name
(基本上是vulkan_test::vkGetInstanceProcAddr
)在vulkan_test
命名空间中声明(请参见vulkan_函数.h#8
-or):
vulkan_library.cpp
#include "vulkan_functions.h"
...
bool vulkan_test::load_vulkan_function(LIBRARY_TYPE const& vulkanLibrary)
{
#define EXPORTED_VULKAN_FUNCTION(name) \
vulkan_test::name = (PFN_##name)LOAD_FUNCTION(vulkanLibrary, #name); \
if (vulkan_test::name == nullptr) \
...
确保load\u vulkan\u函数
在vulkan\u测试
命名空间中声明,并且vulkan\u函数.h
包含在vulkan\u库.cpp
中
这里的关键是您必须将LOAD_函数的结果
分配给extern
变量name
(基本上是vulkan_test::vkGetInstanceProcAddr
)在vulkan_test
命名空间中声明(请参见vulkan_函数.h#8
-or):
vulkan_library.cpp
#include "vulkan_functions.h"
...
bool vulkan_test::load_vulkan_function(LIBRARY_TYPE const& vulkanLibrary)
{
#define EXPORTED_VULKAN_FUNCTION(name) \
vulkan_test::name = (PFN_##name)LOAD_FUNCTION(vulkanLibrary, #name); \
if (vulkan_test::name == nullptr) \
...