Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Маршалинг массива структур с массивами


Автор: amarenkov 25.8.2008, 13:32
Добрый день.

Необходимо получить массив структур из dll, сделанной в Delphi, в C#.

Структура в Delphi:
Код

  SomeRecord = record
    i : integer;
    a : array of integer;    
  end;


Экспортируемая в dll функция:
Код

  procedure Func6(var a: array of SomeRecord ); stdcall;


Внутри функции массив создается и заполняется. Со стороны C# пробовал описывать структуру:
Код

    [StructLayout(LayoutKind.Sequential)]
    public struct SomeRecord
    {
        [MarshalAs(UnmanagedType.I4)] public int i;
        public int[] a;        
    }


и функцию:
Код

    [DllImport("Some.dll", EntryPoint = "Func6")]
        public static extern void Func6(ref SomeRecord[] a);


При вызове этой функции в момент выполнения выдает ошибку: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

Как мне таки достать этот массив структур? Dll переделать можно, если будет такая необходимость. MSDN и Google пока не очень помогли smile.

Заранее спасибо smile.

Автор: marcusmae 26.8.2008, 19:52
amarenkov, прикрепите что ли dll-ку...

хм, ещё стоит попробовать убрать ref, как http://forums.msdn.microsoft.com/en-US/csharpgeneral/thread/a558f142-e368-49bf-b5b8-35c3342cbf0d/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)