10/04/24 12:24:56
>>239
そりゃ引数の名前がおかしいだけで、SIZE_Tはポインタ長ですって。
それはさておき、次のような関数を持つ64ビットDLLを作成して、
__declspec(dllexport) __int64 WINAPI TestFunc1(__int64 a, __int64 b, __int64 c, __int64 d, __int64 e, __int64 f)
{
return a + b + c + d + e + f;
}
C#側で次のようにインポートすると、
[DllImport(@"hoge.dll", ExactSpelling = true)]
private static extern int TestFunc1(int a, int b, int c, int d, int e, int f);
なぜか呼び出しに成功する。
コンパイル結果を見ても、予想通りeとfがスタックに積まれている。
add rax, QWORD PTR e$[rsp]
add rax, QWORD PTR f$[rsp]
(続く)