Ошибка LNK2001 неразрешенный внешний символ

223
15 декабря 2016, 16:04

Не могу понять, в чем ошибка, поправьте, может, где-то что-то не так делаю. Если убрать StartClass();, то программ-то пишет, что непонятно, чему равно s. Использую irrlicht, но в данной ситуации это не имеет значения.

StartGame.h

 #ifndef _STARTGAME_H
 #define _STARTGAME_H
 using namespace irr;
 using namespace gui;
 using namespace core;
 using namespace scene;
 using namespace video;
 using namespace io;
class StartClass
      {
      public:
      void Start();
      StartClass();
      IrrlichtDevice *device;
      video::IVideoDriver* driver;
      scene::ISceneManager* smgr;
      IGUIEnvironment* guienv;
      scene::ICameraSceneNode* camera;
      };
      #endif

StartGame.cpp

#include <irrlicht.h>
#include <iostream>
#include <sys/stat.h>
#include "AILoad.h"
#include <cmath>
#include "StartGame.h"
using namespace irr;
using namespace gui;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
void StartClass::Start()
{
StartClass s;
s.device = createDevice(video::EDT_OPENGL,core::dimension2d<u32>(800,600));
s.driver = s.device->getVideoDriver();
s.smgr = s.device->getSceneManager();
s.guienv = s.device->getGUIEnvironment();   
s.camera = s.smgr->addCameraSceneNodeFPS();
}

main.cpp

#include "main.h"
#include <irrlicht.h>
#include <iostream>
#include <sys/stat.h>
#include "AILoad.h"
#include <cmath>
#include "StartGame.h"
using namespace irr;
using namespace gui;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
#ifdef _MSC_VER
#pragma comment(lib, "Irrlicht.lib")
#endif
int main()
{
    StartClass s;
    s.camera->setPosition(core::vector3df(0,0,0));
    s.camera->setFarValue(10000.0f);
}

Ошибка:

Answer 1

В ошибке сказано практически всё, что вам надо. У вас заявлен, но не определён конструктор класса StartClass.

Кроме того, метод Start выглядит подозрительно, т. к. он работает не с самим объектом (этот метод находится внутри класса, видите?), а создаёт временный объект, инициализирует его поля и тут же убивает его.

Думаю, вам нужен конструктор такого вида:

StartClass::StartClass()
{
    device = createDevice(video::EDT_OPENGL,core::dimension2d<u32>(800,600));
    driver = device->getVideoDriver();
    smgr = device->getSceneManager();
    guienv = device->getGUIEnvironment();   
    camera = smgr->addCameraSceneNodeFPS();
}

(а метод Start не нужен вовсе).

READ ALSO
Создание членов-классов на лету

Создание членов-классов на лету

Всех с новым годом, господа, и сразу из-под ёлки к делуПишу программу, которая будет работать с несколькими файлами структурированных данных

219
Из-за DebugActiveProcess зависает вся система!

Из-за DebugActiveProcess зависает вся система!

После использования DebugActiveProcess() раз в несколько секунд подвисает вся сисетмаПроцесс, к которому подключаюсь, не системный! Не могу разобрать,...

188
Структура данных для z-index

Структура данных для z-index

Необходимо подобрать структуру данных для хранения данных z-indexВсе индексы должны быть уникальными и для них должна быть определена операция...

169
Не видит идентификаторов в main из класса

Не видит идентификаторов в main из класса

Вроде все правильно, почему так? Что забыл? Не видит device, driver, smgr, guienv, camera, skybox, font

221