C# と VBScript で動作する COM オブジェクトを開発しています。また、32 ビットと 64 ビットをサポートする必要があります。
私が抱えている問題は、ポインターにあります。私の .IDL の一部を参照してください
HRESULT Copy([in] PTRTYPE destAddr, [in] PTRTYPE srcAddr, [in] int bytes);
PTRTYPE を void* として宣言すると、c# はそれらを IntPtr と見なし、VB6/VBScript はそれらを "As Any" と見なします。
このアプローチの問題は、「Any」型パラメーターを使用した単純なポインター計算を実行できないことです。
PTRTYPE を long (および 64 ビットで「ハイパー」) として宣言すると、ポインター演算を実行できるようになりますが、C# では、32/64 ビット プラットフォームに応じて、同じメソッドに対して 2 つの異なる定義があります。
VARIANT を PTRTYPE 型として使用することは避けたいと思います。
C# と VBScript の両方と互換性を持たせる方法はありますか?
前もってありがとう、マウロ。