跨类调用函数会导致运行时检查失败#0 - 未正确保存ESP的值

时间:2014-07-03 12:06:45

标签: c++ mfc runtime-error calling-convention

我有一个函数调用另一个函数,这会在返回调用函数时导致以下运行时检查失败:

  

运行时检查失败#0 - 未正确保存ESP的值   跨函数调用。这通常是调用函数的结果   声明了一个调用约定并声明了一个函数指针   与不同的召集惯例。

GridCtrl类:

class CNJAGridCtrl : public CWnd

调用功能代码:

LRESULT CNJAGridCtrl::OnUpdateCell(WPARAM wParam, LPARAM lParam)
{
    if (!(BOOL)wParam)
    {
        return true;
    }
    if (!m_bAllowUpdate)
    {
        return true;
    }

    NJACELLINFO *pDisp = (NJACELLINFO*)lParam;
    NJACELLINFO sDisp;
    sDisp.m_bFormatOnly = TRUE;
    sDisp.m_iColumn = pDisp->m_iColumn;
    sDisp.m_lLine = pDisp->m_lLine;
    GetDimensions(&sDisp);

    sDisp.m_csText = pDisp->m_csText;
    BeginWaitCursor();
    UpdateCell(m_ctlLine.IsCurrentAddLine(), pDisp);//Function call with issue
    m_ctlSheet.InvalidateLine(sDisp.m_lLine, sDisp.m_lLine);
    EndWaitCursor();

    return true;
}

被调用的函数类:

class CGridProdReport : public CNJAGridCtrl  

和代码:

void CGridProdReport::UpdateCell(BOOL bAdd,NJACELLINFO sDisp)
{
//Crashes even without any code
}

我不知道为什么会这样。编译器设置为全面使用__cdecl。

0 个答案:

没有答案