1. 程式人生 > >dynamic DLL 呼叫錯誤 -The value of ESP was not properly saved across a function call

dynamic DLL 呼叫錯誤 -The value of ESP was not properly saved across a function call

  DLL 呼叫錯誤 -The value of ESP was not properly saved across a function call. 

在呼叫DLL中的函式有時候會出現如下對話方塊的錯誤:

Microsoft Visual C++ Debug Library:

Debug Error:
Program: ...
Module:
File: i386/chkesp.c
Line: 42

The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.

(Press Retry to Debug the Application)

其解決方法之一是:

在函式呼叫前加入 WINAPI

例如:

typedef BOOL (WINAPI *LoadSDK)();
typedef INT  (WINAPI *BarcodeAnalyzeImage)(LPCTSTR lpszImagePath, long pVal);
typedef INT  (WINAPI *BarcodeResult)(INT nItem, LPSTR lpszBuffer, int nBufferLen);
typedef void (WINAPI *FreeSDK)();