私は 64 ビットのプロセスで、int
サイズは 8 バイトです。
32ビットにコンパイルされたdllを参照しています。
この dll には、パラメーターを受け取る関数がありint
ます。
何が起こるか?
「コンテナ」に送信し8 byte
ていますか?4 byte
いいえ、64 ビット/C# では、anint
はまだ 4 バイトです。
C# では、int
常にエイリアスにすぎませんglobal::System.Int32
変更されるのは参照サイズとポインターサイズですが、それはすべて IL によって抽象化されているため、何も変更する必要はありません。ただし、CLI は 32 ビットxor (nand?) 64 ビットのみになることに注意してください。そのうちの 1 つを「任意の CPU」にする必要がある場合があります。
常にマップされるSystem.Int32
ため、必要なのは4つだけです
C# では、int は 32 ビット アセンブリと 64 ビット アセンブリで同じサイズです。int
orInt32
は常に 32 ビットですが、long
orInt64
は常に 64 ビットです。
int
C# では常に 32 ビット (4 バイト) ですが、C++ などの他の言語ではそうではありません。
System.IntPtr
x86 マシンでは 4 バイト、64 ビット OS では 8 バイトです。OS 依存の整数型が必要な場合は、これを使用します。