我收到此错误
>GXRenderManager.obj : error LNK2001: unresolved external symbol "private: static class GXRenderer * GXRenderManager::renderDevice" (?renderDevice@GXRenderManager@@0PAVGXRenderer@@A)
以下是我的代码......
class GXDX: public GXRenderer {
public:
void Render();
void StartUp();
};
class GXGL: public GXRenderer {
public:
void Render();
void StartUp();
};
class GXRenderer {
public:
virtual void Render() = 0;
virtual void StartUp() = 0;
};
#ifndef GXRM
#define GXRM
#include <windows.h>
#include "GXRenderer.h"
#include "GXDX.h"
#include "GXGL.h"
enum GXDEVICE {
DIRECTX,
OPENGL
};
class GXRenderManager {
public:
static int Ignite(GXDEVICE);
private:
static GXRenderer *renderDevice;
};
#endif
#include "GXRenderManager.h"
int GXRenderManager::Ignite(GXDEVICE DeviceType)
{
switch(DeviceType)
{
case DIRECTX:
GXRenderManager::renderDevice = new GXDX;
return 1;
break;
case OPENGL:
GXRenderManager::renderDevice = new GXGL;
return 1;
break;
default:
return 0;
}
}
#include "GXRenderManager.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
return 0;
}
我不想让它做任何事情。我只是想编译没有错误。如果有人能帮我一把,那我就是新人了。那挺棒的。感谢
答案 0 :(得分:6)
您需要静态成员GXRenderer::renderDevice
的实际定义(或实例)。该类声明了它,但需要在一个地方对它进行定义。
在你的GXRenderManager.cpp文件中有一行如下:
GXRenderer * GXRenderer::renderDevice = NULL;
或任何适当的初始化。
答案 1 :(得分:1)
在Visual Studio C ++中,转到 工具 - &GT;选项 - &GT;项目 - &GT; VC ++ 目录并选择“显示 目录:“在右上角 手角并选择“包含文件” - 然后输入找到您正在使用的头文件的文件夹。
也去 项目 - &gt;属性 - &gt;链接器 - &gt;输入 - &gt;其他依赖项并输入完整路径 您正在使用的库文件
了解更多信息: http://www.codeguru.com/forum/showthread.php?t=289136