ошибка LNK2001: неразрешенный внешний символ - PullRequest
1 голос
/ 16 июня 2010

Я получаю эту ошибку

>GXRenderManager.obj : error LNK2001: unresolved external symbol "private: static class GXRenderer * GXRenderManager::renderDevice" (?renderDevice@GXRenderManager@@0PAVGXRenderer@@A)

Вот мой код ...

GXDX.h

class GXDX: public GXRenderer {
public:
    void Render();
    void StartUp();
};

GXGL.h

class GXGL: public GXRenderer {
public:
    void Render();
    void StartUp();
};

GXRenderer

class GXRenderer {
public:
    virtual void Render() = 0;
    virtual void StartUp() = 0;

};

GXRenderManager.h

#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

GXRenderManager.cpp

#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;
        }
    }

main.cpp

#include "GXRenderManager.h"

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
{
    return 0;
}

Я не пытаюсь заставить его что-либо делать. Я просто пытаюсь скомпилировать без ошибок. Я новичок во всем этом, так что если кто-нибудь может мне помочь. что будет здорово. спасибо

Ответы [ 2 ]

6 голосов
/ 16 июня 2010

Вам нужно фактическое определение (или экземпляр) для статического члена GXRenderer::renderDevice.Класс объявляет это, но его определение должно быть точно в одном месте.

В вашем файле GXRenderManager.cpp есть строка вроде этого:

GXRenderer * GXRenderer::renderDevice = NULL;

или любая другая инициализация можетподойдет.

1 голос
/ 16 июня 2010

В Visual Studio C ++ перейдите в Инструменты-> Параметры-> Проекты-> Каталоги VC ++ и выберите «Показать каталоги для:» в правом верхнем углу и выберите «Включить файлы» - и затем введитеПапка, в которой находятся файлы заголовков, которые вы будете использовать.

Также зайдите в Project-> Properties-> Linker-> Input-> Additional Dependencies и введите полный путь к используемому вами файлу библиотеки

для получения дополнительной информации: http://www.codeguru.com/forum/showthread.php?t=289136

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...