【发布时间】:2011-04-26 12:49:02
【问题描述】:
我们在 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# 中使用 IntPtr 不起作用,因为代码在 c# 中需要 long 或 int。
我可以在 c# 方法中使用任何可以编译为 long 或 int 的类型,具体取决于平台?
我宁愿不必通过两次使用该函数来复制代码,而且由于向后兼容性,我不确定我们是否可以将 IDL 更改为仅使用 Int64。
任何帮助将不胜感激。 谢谢
【问题讨论】: