次のように、idl ファイルで宣言されたメソッドがあります。
[id(7), helpstring("method SomeFunction")] HRESULT SomeFunction([in] INT_PTR windowHandle, [out, retval] VARIANT_BOOL* dlgResult);
このメソッドを使用して、C# で実装します。
public bool SomeFunction(int windowHandle)
32 ビットをビルドするときは問題なく動作しますが、x64 をビルドすると、idl が 64 ビット値を探し、c# が 32 ビット値を期待するため、型が一致しません。
C# ではコードに long または int が必要なため、C# で IntPtr を使用しても機能しません。
プラットフォームに応じて long または int にコンパイルされる c# メソッドで使用できる型はありますか?
関数を 2 回使用してコードを複製する必要はなく、下位互換性のために IDL を変更して Int64 のみを使用できるかどうかはわかりません。
どんな助けでも大歓迎です。ありがとう