gpt4 book ai didi

c# - 如何在 COM 中传递 RECT

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:23:38 27 4
gpt4 key购买 nike

我需要从 COM 到 C# 的 64 位 RECT,所以我在 IDL 中定义了一个简单的方法:

[id(23), helpstring("method GetRect")] HRESULT GetRect([out,retval] RECT* pRect);

并在 C++ 中实现为

STDMETHODIMP CSpot::GetRect(RECT* pRect)
{
CRect rec = get_position();
*pRect = rec;
return S_OK;
}

我在 C# 中调用为:

tagRECT rec = pSpot.GetRect();

大多数时候没问题,但有时我得到 0xC0000005:访问冲突写入位置 0x0000000000000000。

排队:

*pRect = rec;

什么会导致这个异常?

最佳答案

不确定这是否是您的问题,但是当从 COM 方法使用 RECT 时,我需要按如下方式“定义”RECT 对象:

[StructLayout(LayoutKind.Sequential, Pack = 0)]
public struct RECT
{
public int left;
public int top;
public int right;
public int bottom;
}

关于c# - 如何在 COM 中传递 RECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16533257/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com