1

在从 VS2010 迁移到 VS2012 之后,我一遍又一遍地遇到同样的崩溃。代码为 C0000409 的 BEX 错误。

static void LoadBonus()
{
    // Get Bonus EXP
    {
        sql::Statement* stmt = mysql_con_sps->createStatement();
        sql::ResultSet* res = stmt->executeQuery("SELECT `value` FROM `variables` WHERE `name` = 'expbonus'");

        if (res->next())
        {
            dwBonusEXP = res->getInt("value");
            delete stmt;
            delete res;
        }
        else
        {
            delete stmt;
            delete res;
            printf("MySQL Error: GetBonusEXP Failed.\n");
            WriteToFile("SQLLog.txt", "MySQL Error: GetBonusEXP Failed.\n");
            ExitProcess(0);
        }
    }

    // Get Bonus SP
    {
        sql::Statement* stmt = mysql_con_sps->createStatement();
        sql::ResultSet* res = stmt->executeQuery("SELECT `value` FROM `variables` WHERE `name` = 'spbonus'");

        if (res->next())
        {
            dwBonusSP = res->getInt("value");
            delete stmt;
            delete res;
        }
        else
        {
            delete stmt;
            delete res;
            printf("MySQL Error: GetBonusSP Failed.\n");
            WriteToFile("SQLLog.txt", "MySQL Error: GetBonusSP Failed.\n");
            ExitProcess(0);
        }
    }

    printf("[Server] BonusExp: %d  BonusSP: %d\n", dwBonusEXP, dwBonusSP);
}

在这个函数的末尾,编译器正在添加一个与 /GS 标志相关的调用,C0000409 崩溃在那里崩溃。

为什么会发生,我该如何解决?

谢谢你。

4

0 回答 0