最終更新日 2024-06-21

WinapiとCdecl

概要

WinapiとCdecl

dllの場合、C++側のExport関数は通常「WINAPI」を呼び出し規約として付けますが、
まれに何も付けないことも考えられます。
何も付けない場合(コンパイル時のオプションにもよりますが)、基本はcdeclを付けたことと同じこととなります。

例えば、秀丸の場合、本体のHidemaru.exeのExport関数は、全てWINAPIとなっていますが、
HmOutputPane.dllやHmExplorerPane.dllのExport関数は、全てcdeclとなっています。

このため、C#から呼ぶ際にはどちらなのかを明示する必要があります。

WinapiとCdecl

C++側がWINAPIなら「CallingConvention = CallingConvention.Winapi」
cdeclなら「CallingConvention = CallingConvention.Cdecl」

を付ければよいでしょう。
それ以外と使うことはほぼないと思われます。