2014-02-16 28 views
0

所以我一直在試圖修復一個遊戲引擎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)" ([email protected]@[email protected]) referenced in function "public: __thiscall CGame::CGame(void)" ([email protected]@[email protected]) C:\Users\User\Desktop\Crytek\Mods\CryEngine2\Code\Game.obj GameDll 

Error 2 error LNK2019: unresolved external symbol "public: __thiscall MODCursor::~MODCursor(void)" ([email protected]@[email protected]) referenced in function "public: virtual __thiscall CGame::~CGame(void)" ([email protected]@[email protected]) C:\Users\User\Desktop\Crytek\Mods\CryEngine2\Code\Game.obj GameDll 

是啊,平時我可以解決這個問題,但並未奏效在這種情況下。我能做什麼錯了?

這些文件與修復指南中的文件相同,因此在這裏發佈文件沒有任何意義,因爲這會浪費空間。如果真的需要這些文件來調查此問題,我會在任何人請求時上傳它們。

也許修復本身有錯誤?從修復到我的生成一種可能的區別在於,修復程序使用Visual Studio 2008中,我使用的Visual Studio 2013年

+1

MODCursor.cpp沒有被編譯。它在解決方案中嗎? –

+0

是的,MODCursor.cpp和MODCursor.h都在解決方案中。 – cybermonkey

+0

如果你在cpp中寫了一些亂碼,你會得到一個錯誤。我仍然認爲它沒有被編譯。 –

回答

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