首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

_stdcal _cdecl解决方案

2012-02-27 
__stdcal __cdecl需要调用别人的一个A DLL和自己的一个B DLL这时候需要将编译器设置为__stdcal 才能编译成

__stdcal __cdecl
需要调用别人的一个A DLL和自己的一个B DLL
这时候需要将编译器设置为__stdcal 才能编译成功..否则出现error LNK2001: unresolved external symbol "int __cdecl SD_CloseDevice(void * *)" (?SD_CloseDevice@@YAHPAPAX@Z) 一堆这个错误...
如果这样设置后编译通过但是调用我的B 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. 

我将我的DLL改成__Stdcal 也一样有这个会报这个错误...., 这是咋回事......
B DLL 是win 32 DLL

[解决办法]
dumpbin A.dll
[解决办法]
如果A.DLL有头文件,只需要引用头文件,调用就可以了,编译器会自己处理。

如果是动态载入,声明函数时,你需要声明为与A.LL的调用约定(stdcal)相同

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.
===========
调用不同,堆栈不平衡,出现错误
[解决办法]
出错信息绝对是 __stdcall和__cdecl不匹配的问题。。

神奇的地球

热点排行