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)();