Неразрешенный внешний символ — ошибка в руководстве?

Поэтому я пытался исправить странную ошибку в SDK игрового движка, когда вместо собственного курсора игры используется курсор загрузки Windows.
Исправление для этого здесь: http://www.crydev.net/wiki/index.php/Use_Custom_Cursor#Step_1:_Fixing_The_Cursor_Bug.

Я следил за исправлением, но продолжаю получать их при сборке игровой DLL:

Error   1   error LNK2019: unresolved external symbol "public: __thiscall MODCursor::MODCursor(void)" (??0MODCursor@@QAE@XZ) referenced in function "public: __thiscall CGame::CGame(void)" (??0CGame@@QAE@XZ)  C:\Users\User\Desktop\Crytek\Mods\CryEngine2\Code\Game.obj  GameDll

Error   2   error LNK2019: unresolved external symbol "public: __thiscall MODCursor::~MODCursor(void)" (??1MODCursor@@QAE@XZ) referenced in function "public: virtual __thiscall CGame::~CGame(void)" (??1CGame@@UAE@XZ)    C:\Users\User\Desktop\Crytek\Mods\CryEngine2\Code\Game.obj  GameDll

Да, обычно я могу легко решить эту проблему, правильно определив класс, но в этом случае это не сработало. Что я могу делать не так?

Файлы в том виде, в каком они есть в руководстве по исправлению, поэтому публиковать файлы здесь нет никакого смысла, так как здесь они будут пустой тратой пространства. Если файлы действительно нужны для расследования этой проблемы, я буду загружать их, если кто-нибудь их попросит.

Возможно, есть ошибка в самом исправлении? Одним из возможных отличий от исправления для моей сборки является то, что исправление использует Visual Studio 2008, я использую Visual Studio 2013.

0

Решение

Может быть, попытаться поместить все это в файл .h:

#ifndef _MOD_CURSOR
#define _MOD_CURSOR

#include <windows.h>
#include "resource.h"
#undef GetUserName // This is a macro in windows.h, gives issues with GetUserName() of ISystem

class MODCursor : public ISystemEventListener
{
public:
MODCursor() {
gEnv->pSystem->GetISystemEventDispatcher()->RegisterListener(this);
m_cursor = LoadCursor((HINSTANCE)g_hInst, MAKEINTRESOURCE(IDC_CURSOR1));
SetCursor(m_cursor);
}
~MODCursor(){
gEnv->pSystem->GetISystemEventDispatcher()->RemoveListener(this);
}
private:
virtual void OnSystemEvent( ESystemEvent event,UINT_PTR wparam,UINT_PTR lparam ) {
if(event == ESYSTEM_EVENT_TOGGLE_FULLSCREEN || event == ESYSTEM_EVENT_RESIZE || event == ESYSTEM_EVENT_CHANGE_FOCUS){
if (m_cursor != GetCursor())
SetCursor(m_cursor);
}
}
HCURSOR m_cursor;
};
#endif
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]