C++ - 错误 LNK2001 : unresolved external symbol

标签 c++ sdl

<分区>

我收到这个错误:

1>Exception.obj : error LNK2001: unresolved external symbol "public: static struct SDL_Window * Exception::window" (?window@Exception@@2PAUSDL_Window@@A)

每次我尝试编译程序。我显然遗漏了一些东西,但我看不出我做错了什么......我该如何解决错误?以下是文件:

异常.h:

#pragma once

#include <SDL.h>
#include <stdio.h>

class Exception
{
public:
    static SDL_Window* window;
    static enum ErrorMessageType{ CONSOLE, WINDOW, BOTH };

    static void initialize(SDL_Window* window);
    static void showErrorMessage(const char* error, Exception::ErrorMessageType messageType);
};

异常.cpp

#include "Exception.h"

void Exception::initialize(SDL_Window* window)
{
    Exception::window = window;
}

void Exception::showErrorMessage(const char* error, Exception::ErrorMessageType messageType)
{
    switch (messageType)
    {
        case Exception::CONSOLE:
            printf("\n%s\n", error);
        break;

        case Exception::WINDOW:
            SDL_ShowSimpleMessageBox(0, "Error", error, window);
        break;

        case Exception::BOTH:
            printf("\n%s\n", error);
            SDL_ShowSimpleMessageBox(0, "Error", error, window);
        break;
    }
}

最佳答案

class Exception
{
public:
    static SDL_Window* window;

这声明了 Exception::window,但没有实例化它。

在你的一个翻译单元中的某个地方,你还必须实例化这个类成员:

SDL_Window *Exception::window;

关于C++ - 错误 LNK2001 : unresolved external symbol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29723202/

相关文章:

c++ - C++ 中的射线网格交集或 AABB 树实现,开销很小?

c++ - 右值引用模板推导

c++ - SDL 和 GLFW 每次轮询仅报告一个键(重复),即使同时按下多个键也是如此

c++ - 为 SDL 事件过滤创建指向成员函数的非常量指针

c++ - Mix_Init和Mix_OpenAudio SDL有什么区别?

c++ - 是否可以将 SDL2 与智能指针一起使用?

c++ - 在 2d C 数组上使用 std::transform 到 1d C 数组

c++ - C++中指针引用的生命周期

c++ - c中的自定义PCB闪烁灯

c++ - 关于 SDL_Window 和 unique_ptr 的几个问题