1. 程式人生 > 實用技巧 >C++ Run-Time Check Failure #0 錯誤記錄

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

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

最近工作中,需要呼叫第三方SDK, 我這邊是動態呼叫DLL檔案,載入DLL庫和匯出函式地址都成功了,但是在呼叫的時候卻報錯彈框了,除錯的時候彈框如下:
在這裡插入圖片描述
錯誤描述是函式呼叫約定不一致破壞了ESP的值,處理如下:

1、程式碼中,函式宣告 typedef void (__stdcall* pFun)(),使用呼叫規範為__stdcall,於是檢視專案屬性的呼叫約定
2、點選【專案】->【屬性】->【配置屬性】->【C/C++】->【高階】->【呼叫約定】 ,檢視預設約定方式為__cdecl (/Gd),於是改為__stdcall (/Gz);儲存之後重新編譯,結果還是不行;

3、於是將函式宣告改為typedef void (__cdecl * pFun)(),同時將專案屬性的呼叫約定改為__cdecl (/Gd),儲存重新編譯居然可以了;應該是DLL中使用的函式呼叫約定方式為__cdecl