我正在開發一個COM對象,應該在C#和VBScript中工作。它也必須支持32位和64位。IntPtr與任何COM中的
我遇到的問題是指針。見我.IDL
HRESULT Copy([in] PTRTYPE destAddr, [in] PTRTYPE srcAddr, [in] int bytes);
的一部分。如果我宣佈PTRTYPE爲void *,C#把它們看作一個IntPtr和VB6/VBScript中看到他們「爲已任」
的這種方法的問題是,我不能用「Any」類型的參數做簡單的指針數學。
如果我聲明PTRTYPE長(64位「超」),現在我可以做指針數學,但在C#我有兩種不同的定義,對於相同的方法,取決於32/64位平臺。
我希望避免使用VARIANT作爲PTRTYPE類型。
有什麼辦法可以使它兼容C#和VBScript?
在此先感謝, 毛羅。
您即將犯下觸發ADO_LONGPTR崩潰的相同錯誤。只需提供一個Copy64()方法或一個IAddress接口。 – 2012-02-18 02:22:58