我一直在使用PInvoke讓我的C#應用程序調用我編寫的C++函數。使用PInvoke時,爲什麼使用__stdcall?
現在,我一直聽到無處不在,我需要用__stdcall
慣例定義那些外部可訪問的函數。我的問題是:爲什麼?
到目前爲止,我不小心忽略了這個建議,而且一切都像魅力一樣。當我將__stdcall
添加到我的函數中時,所有內容都以相同的方式工作(或者至少看起來如此)。
This article說__stdcall
用於Win32位功能,但我正在編譯對付x64平臺。這是否意味着我不應該使用__stdcall
,還是意味着我錯過了其他的東西?
請回復時用簡單的英文。 ;-)這樣的行(引自我鏈接的文章):
被調用者清除堆棧,因此編譯器使可變參數函數__cdecl。
讓我的大腦感受到吹過它的風滾草。
這是有道理的更多細節。實際上,我應該讓我的圖書館能夠讓任何人最終使用它,所以我會確保在需要的地方使用__stdcall。 – 2013-04-05 11:23:33