「Androidは電気羊の夢を見るか」を読みたい管理者のブログ

仕事などでの色々な発見を記事にしてます。不定期更新。

意外と重要な__stdcall指定

みなさん__stdcall指定子をご存知で?

詳細は以下のページを
__stdcall

他にも__cdeclなんてものがあるらしいですね。非常に紛らわしいですね。

よく読んでみると

__cdecl は、C および C++ プログラムの既定の呼び出し規約です。

一方で

Win32API はデフォルトが 「_stdcall」
C# のモジュールから C++ のネイティブ メソッドをコールする場合・・・ | C# Blues

まんどくせ。


ちなみにC#は.NetFramework 3.5までは__stdcallのようです。どうやら。
4.0からは__cdeclのようです。
更にめんどくせ。


ちなみに__stdcallのつもりで__cdecl関数呼び出そうとするとリンカーエラーになります。私はこのエラーに随分と困らされました。やぁなつかしい。


で、本題は
C#C++(dll)をやろうとすると
C++の呼び出される関数に__stdcallを指定しなきゃいけないらしい
(ただしここら辺間違えてもエラーは発生しない)

てことがわかった。

やーめんどくせー。