C 層に PInvokes する 32 ビット .NET アセンブリがあります。このアセンブリを 64 ビットに移植したいと考えています。私は 64 ビットへの移植に関連する多くの文書を読みましたが、そのすべてが、構造体を使用する場合は位置合わせに注意する必要があることを示唆しているようです。
構造のアラインメントに関連する一般的な質問があり、何も見逃さないように最初にそれを明確にしたかったのです。
構造体ポインターを受け入れ、基本的に内部の値を埋める C エントリ ポイントがあるとします。この C コードにはパッキング ディレクティブがなく、すべての .NET 構造体が pack=8 に配置されています。したがって、隣接する int を持つ構造体を渡すと、.NET レイヤーに入力されたデータの解釈に問題がある可能性があると考えました。C はデフォルトで pack=4 を使用し、.NET では構造体を pack=8 として解釈しているためです。レイヤーなので、問題が発生する可能性があると考えました。しかし、そうではないようです。データはうまく解釈されているようです。
誰でもこの動作を説明できますか?
ありがとう、ニランジャン