c++ 结构指针转换为数组互操作 c#

c++ structure pointer cast as array interop c#

前言:

我有一个遗留的 c++ 应用程序,它有一个 COM 组件。其中一种方法是

HRESULT foo(int* returnInteger)

虽然最初的实现被设计为 return 单个 int,但程序的发展使得实现它的 类 现在 return 是一个整数列表而不是一个整数。

returnInteger = memalloc((number of integers)*size of integer)

并且调用者也通过

读取return指针
number of integers returned = sizeof(returnInteger)/size of integer

我知道这个设计不是纯 COM,不理想,并且在设计时没有考虑到互操作性。但是,我必须凑合着用我有的东西。

当前问题:

设计一个使用该组件的 c# 应用程序。我知道我将不得不慢慢逐步淘汰它,但现在,我必须继续使用相同的方法

c# 将方法显示为

foo(ref int returnInteger)

c# 应用程序将只读取一个 int(即使 c++ 客户端正在发送一个整数数组)。我怎样才能使 c# 应用程序的行为与 c++ 客户端相同并读取整数数组?

非常感谢对此的任何帮助

找到解决方法:使用托管 C++ 作为中间层。

虽然不是最理想的解决方案,但由于我无法修改遗留代码,这是我最喜欢的路线。

非常感谢大家的帮助