我正在开发一个应该在 C# 和 VBScript 中工作的 COM 对象。它还必须支持 32 位和 64 位。
我遇到的问题是指针。查看我的 .IDL 的一部分
HRESULT Copy([in] PTRTYPE destAddr, [in] PTRTYPE srcAddr, [in] int bytes);
如果我将 PTRTYPE 声明为 void*,c# 将它们视为 IntPtr,而 VB6/VBScript 将它们视为“任意”
这种方法的问题是我不能用“任何”类型参数做更简单的指针数学。
如果我将 PTRTYPE 声明为 long(并且在 64 位中声明为“超”),那么现在我可以进行指针数学运算,但在 C# 中,我对同一方法有两个不同的定义,具体取决于 32/64 位平台。
我希望避免使用 VARIANT 作为 PTRTYPE 类型。
有什么方法可以使它与 C# 和 VBScript 兼容?
在此先感谢,毛罗。