概要
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」
を付ければよいでしょう。
それ以外と使うことはほぼないと思われます。
-
C++側のソース
-
C#側のソース