通过P/Invoke将MFC CArray编组到C#

本文关键字:CArray MFC Invoke 通过 | 更新日期: 2023-09-27 18:00:49

我正在尝试编写一个C#类(2010(,该类允许使用遗留C++dll中包含的函数。这些函数是使用__stdcall导出的,并且具有不同的参数集。我在处理字符串和其他主键时没有问题,并且能够毫无问题地调用这些函数。

问题是,一些函数包含一个CArray&引用作为参数。我不知道如何封送这个数据类型,或者它是否可能。

不幸的是,我无法更改旧版DLL代码。

通过P/Invoke将MFC CArray编组到C#

要正确处理此问题,您可以制作一个包装DLL(使用与您想要调用的相同的MFC/C++运行时版本,并确保接受相同数组的形式,例如,指向本机C++数组的传统指针。

这个包装DLL可以从C#调用到。

您可以尝试使用更新的MFC版本(并使用C++/CLI进行封送(,但新的CArray可能是二进制的,与传统库所期望的不兼容。