C++ - 错误 LNK2001:无法解析的外部符号
C++ - error LNK2001: unresolved external symbol
我收到此错误:
1>Exception.obj : error LNK2001: unresolved external symbol "public: static struct SDL_Window * Exception::window" (?window@Exception@@2PAUSDL_Window@@A)
每次我尝试编译程序。我显然遗漏了一些东西,但我看不出我做错了什么......我该如何解决错误?以下是文件:
Exception.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);
};
Exception.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
,但没有实例化它。
在你的某个翻译单元中的某个地方,你还必须实例化这个 class 成员:
SDL_Window *Exception::window;
您需要在C++文件中定义静态变量如下
SDL_Window* Exception::window;
我收到此错误:
1>Exception.obj : error LNK2001: unresolved external symbol "public: static struct SDL_Window * Exception::window" (?window@Exception@@2PAUSDL_Window@@A)
每次我尝试编译程序。我显然遗漏了一些东西,但我看不出我做错了什么......我该如何解决错误?以下是文件:
Exception.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);
};
Exception.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
,但没有实例化它。
在你的某个翻译单元中的某个地方,你还必须实例化这个 class 成员:
SDL_Window *Exception::window;
您需要在C++文件中定义静态变量如下
SDL_Window* Exception::window;