在从 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 崩溃在那里崩溃。
为什么会发生,我该如何解决?
谢谢你。