【发布时间】:2010-10-28 15:22:40
【问题描述】:
我正在从 C# 调用 C++ 函数。作为参数,它接收一个指向结构数组的指针。
struct A
{
int data;
}
int CFunction (A* pointerToFirstElementOfArray, int NumberOfArrayElements)
在 C# 中,我创建了相同的结构(作为一个类)并且我正确地编组它(数组中的第一个元素被正确接收)。这是我对 C++ 结构的 C# 定义:
[StructLayout(LayoutKind.Sequential), Serializable]
class A
{
int data;
}
第一个元素被正确读取,所以我知道结构中的所有字段都被正确编组。当我尝试发送元素数组时会出现问题。 如何创建一个位于单个内存块(块)中的类数组,以便 C++ 函数可以递增指向该数组的指针?
我想我需要类似于 stackalloc 的东西,但我相信它只适用于原始类型?
感谢您的帮助。
【问题讨论】:
-
你知道你在编译时发送的数组的大小吗?
-
@ohadsc 不,它是一个数组的长度(不同的数组),它只有在运行时才知道。
标签: c# arrays marshalling