未解决的外部符号 - 指南错误?

时间:2014-02-16 21:19:45

标签: c++ dll crysis

因此,我一直试图在游戏引擎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。

1 个答案:

答案 0 :(得分:1)

也许试着把它全部放在.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