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)();
文章详细介绍了在使用DLL时遇到的ESP值未正确保存导致的函数调用错误,并提供了解决方案,即在函数调用前加入WINAPI关键字,以确保调用函数和函数指针具有相同的调用约定。
1万+

被折叠的 条评论
为什么被折叠?



