我在调试过程中遇到异常:
在LoongDB.exe中的0x02D5C748处引发的异常:0xC0000005:执行位置0x02D5C748的访问冲突。
错误也指向
02D5C748 mov ecx,dword ptr ds:[7A3C60h]
在令人失望的窗口中。
我正在尝试编译旧的游戏服务器。
// main.cpp
INT APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE, LPTSTR, INT)
{
// ЅыЦ№ЖБД»±Ј»¤ј°µзФґ№ЬАн
::SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT, 0, NULL, 0);
::SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT, 0, NULL, 0);
::SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, 0, NULL, 0);
vEngine::InitNetwork();
vEngine::InitEngine();
#ifdef _DEBUG
EXCEPTION_PROTECT;
#endif
CLoong *pLoong = new CLoong;
if(!pLoong->Init(hInst))
{
//іхКј»ЇК§°Ь
SAFE_DEL(pLoong);
ERR(_T("Loong init failed!"));
return FALSE;
}
pLoong->MainLoop();
SAFE_DEL(pLoong);
vEngine::DestroyEngine();
vEngine::DestroyNetwork();
return 0;
}
// Loong.h (contains CLoong)
// Some staff and class definition
BOOL CLoong::Init(HINSTANCE hInst)
{
// іхКј»Ї±дБї
InitConfig();
// ґґЅЁЅзГж
if(!CreateUI(hInst))
{
return FALSE;
}
//ЧўІбїШЦЖМЁГьБо
RegisterTestCmd(m_pConsole);
// ???ЖБ±ОїШЦЖМЁґ°їЪ№Ш±Х°ґЕҐ
//m_pConsole->GetWnidow()->GetCloseButton()->SetEnable(false);
//// јьЕМПмУ¦
//m_pInput->Init();
//m_pInputMap->Register(0, _T("Hotkey_Console"),
// (INPUTMAPEVENTHANDLE)m_pConsole->GetTrunk().sfp2(&vEngine::Console::Switch), DIK_F5, TRUE, TRUE);
//ЧўІбГьБАнДЈїй
RegisterDBCmd();
//ЙиЦГµЗИлµЗіц»ШµчєЇКэ
m_pServer->Init((TCPLOGINCALLBACK)m_Trunk.sfp2(&CLoong::LoginCallBack),
(TCPLOGOUTCALLBACK)m_Trunk.sfp1(&CLoong::LogoutCallBack),
m_nPort);
// Ф¶іМјаїШіхКј»Ї
g_rtSession.Init(this);
// Жф¶Їґ¦АнПЯіМ
if(!m_pThread->CreateThread(_T("rec_msg"), (THREADPROC)m_Trunk.sfp1(&CLoong::ThreadReceiveMsg), NULL)
|| !m_pThread->CreateThread(_T("proc_msg"), (THREADPROC)m_Trunk.sfp1(&CLoong::ThreadProcessMsg), NULL)
|| !m_pThread->CreateThread(_T("broadcast"), (THREADPROC)m_Trunk.sfp1(&CLoong::ThreadBroadcast), NULL))
{
return FALSE;
}
return TRUE;
}
BOOL CLoong::InitConfig()
{
TCHAR tszPath[MAX_PATH];
ZeroMemory(tszPath, sizeof(tszPath));
if (!m_pUtil->GetIniPath(tszPath, _T("server_config/db/world")))
{
return FALSE;
}
// ¶ЁТеТ»ёцИЭЖч
CreateObj("LoongVar", "VarContainer");
TObjRef<VarContainer> pVar = "LoongVar";
// ¶БИлЕдЦГОДјю,ІўµјИлИЭЖч
pVar->Load("VirtualFileSys", tszPath);
m_nPort = pVar->GetDword(_T("db_server port"));
m_dwDBGoldenCode = pVar->GetDword(_T("db_server golden_code"));
m_dwGameGoldenCode = pVar->GetDword(_T("game_server golden_code"));
// ЗеїХИЭЖч
pVar->Clear();
return TRUE;
}
所以我发现错误仅在
之后出现if(!pLoong->Init(hInst))
所以
似乎有问题pLoong->Init(hInst)
有人可以提供解决方案或一些技巧来帮助我解决这个问题吗?
可以添加您需要的任何代码。