2011-06-13 15 views
4

나는 수신 변수를 double**으로 지정한 C++ dll에 2D C# 가변 배열 (double[][] jaggedArray)을 마샬링하려고합니다. 중첩 배열에 대한 마샬링 지원되지 않습니다C#을 가변 배열 C#을 마샬링

:

그러나, 나는 메시지를 받고 있어요.

지그재그 배열을 평평하게하는 것이 C++의 지그재그 배열을 사용하는 방법입니까?

답변

2

낮은 수준의 Marshal 클래스 메서드를 사용하면 모든 형식을 관리되지 않는 메모리로 마샬링 할 수 있습니다. 예를 들어 jaggedArray의 모든 double [] 배열에 대해 Marshal.AllocHGlobal과 함께 관리되지 않는 메모리 블록을 할당하고 Marshal.Copy 메서드 (Double [], Int32, IntPtr, Int32) 메서드를 사용하여 배열 멤버를 복사합니다. AllocHGlobal은 IntPtr 타입을 반환하는데,이 타입은 poiner로 double 형 *으로 C++ 메소드에 전달 될 수 있습니다.