dynamic DLL 调用错误 -The value of ESP was not properly saved across a function call

来源:互联网 发布:淘宝买家佣金怎么查 编辑:程序博客网 时间:2024/05/22 08:24

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