定义 extern 时未解析的外部符号 "struct API Api"

Unresolved external symbol "struct API Api" when extern is defined

我在我的头文件中定义了一个 extern 和一个结构,但是每当我尝试在我的 CPP 文件中使用函数时,我都会得到这个 linker 错误:

LNK2001 unresolved external symbol "struct API Api" (?Api@@3UAPI@@A)

struct API
{
    HMODULE Kernel32;
    HMODULE User32;
    HMODULE Ws32_32;
    HMODULE Advapi32;
};

extern API Api;

您显示的代码确实声明了该外部符号。
但是代码没有定义外部符号。
您为构建程序而编译的代码文件中至少有一个必须定义它,例如像这样:

API Api;

注意这里没有 extern

然后所有其他代码文件会看到您显示的声明并进行编译。
最后,链接器可以让所有这些代码文件根据定义的一种情况访问结构变量。