我一直在使用PInvoke让我的C#应用程序调用我编写的C++函数。使用PInvoke时,为什么使用__stdcall?
现在,我一直听到无处不在,我需要用__stdcall
惯例定义那些外部可访问的函数。我的问题是:为什么?
到目前为止,我不小心忽略了这个建议,而且一切都像魅力一样。当我将__stdcall
添加到我的函数中时,所有内容都以相同的方式工作(或者至少看起来如此)。
This article说__stdcall
用于Win32位功能,但我正在编译对付x64平台。这是否意味着我不应该使用__stdcall
,还是意味着我错过了其他的东西?
请回复时用简单的英文。 ;-)这样的行(引自我链接的文章):
被调用者清除堆栈,因此编译器使可变参数函数__cdecl。
让我的大脑感受到吹过它的风滚草。
这是有道理的更多细节。实际上,我应该让我的图书馆能够让任何人最终使用它,所以我会确保在需要的地方使用__stdcall。 – 2013-04-05 11:23:33