意外と重要な__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を指定しなきゃいけないらしい
(ただしここら辺間違えてもエラーは発生しない)
てことがわかった。
やーめんどくせー。