我正在尝试基于操作系统加载库,这是我到目前为止所做的。尽管我不明白为什么在.cpp文件中为vulkan_lib变量出现以下错误:“此声明没有存储类或类型说明符”。
.cpp文件:
#include "vulkan_commons.h"
namespace vk {
#if defined _WIN32
vulkan_lib = LoadLibrary(L"vulkan-1.dll");
#elif defined __linux
vulkan_lib = dlopen("libvulkan.so.1", RTLD_NOW);
#endif
}
.h文件:
#ifndef VULKAN_COMMONS_H
#define VULKAN_COMMONS_H
namespace vk {
#if defined _WIN32
#include <Windows.h>
#define LoadFunction GetProcAddress
#define OS_LIB HMODULE
#elif defined __linux
#include <dlfcn.h>
#define LoadFunction dlsym
#define OS_LIB void*
#else
#error
#endif
OS_LIB vulkan_lib;
}
#endif
答案 0 :(得分:2)
extern OS_LIB vulkan_lib;
您需要extern
以便不在每个TU中都定义vulkan_lib
OS_LIB vulkan_lib = ...
您需要对其进行定义