我们在 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。
任何帮助,将不胜感激。谢谢