Run-Time Check Failure #0 - 错误问题

在长时间未编写代码后,遇到一个Run-Time Check Failure #0错误,提示ESP值在函数调用中保存不当。问题出在调用user32.dll中的MessageBoxW函数时,原始代码中函数指针定义缺少调用约定。通过将函数指针类型定义为使用 WINAPI 调用约定(__stdcall),即`typedef int (WINAPI *PFUN)(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);`,解决了这个问题。疑问在于之前不指定调用约定也能正常工作,但现在却需要明确指定。" 121221581,11403581,山西河曲县智慧水务调度信息系统建设案例,"['智慧水务', '供水信息化', 'GIS应用', '远程监控', '数据管理']
摘要由CSDN通过智能技术生成

很久没写代码,一天几行的代码:

typedef  int ( *PFUN)(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
void CTestProcessMonitorDlg::OnBnClickedButton1()
{
    // TODO: Add your control notification handler code here

    //MessageBox(TEXT("Hello"), TEXT("Test"));

    //typedef void (*pfv) ();

    HMODULE hmod = ::LoadLibraryExW(TEXT("user32.dll"), NULL, 0);
    if (hmod != NULL)
    {
        PFUN pFun= (PFUN)GetProcAddress(hmod, "MessageBoxW");
        if (pFun != NULL)
        {
            pFun(m_hWnd, TEXT("Hello"), TEXT("Test"), MB_YESNO);
        }

       :FreeLibrary(hmod);
    }

  
                 
}

突然出现以下的错误:

Run-Time Check Failure #0 - The value of ESP was not p

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值