如何编组包含未知大小的 int 数组的结构?
Posted
技术标签:
【中文标题】如何编组包含未知大小的 int 数组的结构?【英文标题】:How do I marshal a structure containing a array of int of unknown size? 【发布时间】:2020-09-19 15:42:42 【问题描述】:我有一个 c 结构,我想从 c 函数返回到 c#,并且该结构包含一个 int 数组和一个长度。所以基本上
struct MyStruct
int *arr;
int size;
我应该如何在 c 中分配 arr 以确保它可以在 c# 中释放。以及如何在c#中装饰相应的结构以使编组成为可能?
【问题讨论】:
要与 C# 互操作,您使用的是 C、C++、C++/CLI、C++/CX、C++ 与 WRL,还是 C++/WinRT?您使用的是 .NET 还是 Mono?您使用的是 Windows、Macintosh 还是 Linux? 我在 C# 中工作,我调用的库是 C++,但我只调用 C 风格的函数。我使用 Visual Studio 和 .NET 标准。 【参考方案1】:你不能。 您应该通过相同的运行时库分配和释放内存。
【讨论】:
您可以在 C 代码中分配内存,在 C# 中使用它,并在 C 代码中释放内存(通过调用用户函数)。 谢谢,那我想我不需要进一步搜索了。我曾希望结构应该有类似 SizeParamIndex 的东西:docs.microsoft.com/en-us/dotnet/api/… @AndersG 是什么让您认为 SizeParamIndex 不适用于结构? 是否可以将其用于结构?怎么样?以上是关于如何编组包含未知大小的 int 数组的结构?的主要内容,如果未能解决你的问题,请参考以下文章