DLL 调用错误 -The value of ESP was not properly saved across a function cal
2013-10-30 20:12
447 查看
调用DLL时,出现如下错误:
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
I was having the same problem, but I just FIXED it. I was getting the same error from the following code:
HMODULE hPowerFunctions = LoadLibrary("Powrprof.dll");
typedef bool (*tSetSuspendStateSig)(BOOL, BOOL, BOOL);
tSetSuspendState SetSuspendState = (tSuspendStateSig)GetProcAddress(hPowerfunctions, "SetSuspendState");
result = SetSuspendState(false, false, false); <---- This line was where the error popped up.
After some investigation, I changed one of the lines to:
typedef bool (WINAPI*tSetSuspendStateSig)(BOOL, BOOL, BOOL);
which solved the problem. If you take a look in the header file where SetSuspendState is found (powrprof.h, part of the SDK), you will see the function prototype is defined as:
BOOLEAN WINAPI SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN);
So you guys are having a similar problem. When you are calling a given function from a .dll, its signature is probably off. (In my case it was the missing WINAPI keyword).
Hope that helps any future people! :-)
Cheers.
Dheeraj | reply 2003-08-21 23:25
引用自:转载请标明出处:http://blog.csdn.net/HappySong/archive/2005/04/07/339707.aspx
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
I was having the same problem, but I just FIXED it. I was getting the same error from the following code:
HMODULE hPowerFunctions = LoadLibrary("Powrprof.dll");
typedef bool (*tSetSuspendStateSig)(BOOL, BOOL, BOOL);
tSetSuspendState SetSuspendState = (tSuspendStateSig)GetProcAddress(hPowerfunctions, "SetSuspendState");
result = SetSuspendState(false, false, false); <---- This line was where the error popped up.
After some investigation, I changed one of the lines to:
typedef bool (WINAPI*tSetSuspendStateSig)(BOOL, BOOL, BOOL);
which solved the problem. If you take a look in the header file where SetSuspendState is found (powrprof.h, part of the SDK), you will see the function prototype is defined as:
BOOLEAN WINAPI SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN);
So you guys are having a similar problem. When you are calling a given function from a .dll, its signature is probably off. (In my case it was the missing WINAPI keyword).
Hope that helps any future people! :-)
Cheers.
Dheeraj | reply 2003-08-21 23:25
引用自:转载请标明出处:http://blog.csdn.net/HappySong/archive/2005/04/07/339707.aspx
相关文章推荐
- 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 调用错误 -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函数,出现错误 Run-Time Check Failure #0 - The value of ESP was not properly saved across a function
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.... 此错误的解
- 【Dll】Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.... 此错误的解决方法
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. 错误解决
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.... 此错误的解
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. 解决办法
- The value of ESP was not properly saved across a function call的问题 2010-9-26 18:57
- MFC开发遇到的异常Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call
- The value of ESP was not properly saved across a function call.
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.
- C++程序在debug模式下遇到Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call问题。
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call
- 【Debug】The value of ESP was not properly saved across a function call.