天天看點

C++ Run-Time Check Failure #0 錯誤記錄

C++ Run-Time Check Failure #0 錯誤記錄

最近工作中,需要調用第三方SDK, 我這邊是動态調用DLL檔案,加載DLL庫和導出函數位址都成功了,但是在調用的時候卻報錯彈框了,調試的時候彈框如下:

C++ Run-Time Check Failure #0 錯誤記錄

錯誤描述是函數調用約定不一緻破壞了ESP的值,處理如下:

1、代碼中,函數聲明 typedef void (__stdcall* pFun)(),使用調用規範為__stdcall,于是檢視項目屬性的調用約定

2、點選【項目】->【屬性】->【配置屬性】->【C/C++】->【進階】->【調用約定】 ,檢視預設約定方式為__cdecl (/Gd),于是改為__stdcall (/Gz);儲存之後重新編譯,結果還是不行;

3、于是将函數聲明改為typedef void (__cdecl * pFun)(),同時将項目屬性的調用約定改為__cdecl (/Gd),儲存重新編譯居然可以了;應該是DLL中使用的函數調用約定方式為__cdecl