0x02D5C748的未处理异常

时间:2019-06-01 21:50:33

标签: c++ winapi

我在调试过程中遇到异常:

  

在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)

有人可以提供解决方案或一些技巧来帮助我解决这个问题吗?

可以添加您需要的任何代码。

0 个答案:

没有答案