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

时间:2011-07-01 18:27:15

标签: c# .net mfc pinvoke marshalling

我正在尝试编写一个允许使用旧版C ++ DLL中包含的函数的C#类(2010)。函数使用__stdcall导出,并具有不同的参数集。我没有处理字符串和其他灵长类动物的问题,并且能够毫无问题地调用这些函数。

问题是一些功能包含CArray&引用作为参数。我无法弄清楚如何编组这种数据类型,或者它是否可能。

遗憾的是,我无法更改旧版DLL代码。

1 个答案:

答案 0 :(得分:0)

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

可以从C#调用此包装DLL。

您可以尝试使用更新的MFC版本(并使用C ++ / CLI进行编组),但新的CArray可能与旧版库所期望的内容不兼容。