Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маршалинг массива структур с массивами, Из Delphi dll в C# 
:(
    Опции темы
amarenkov
Дата 25.8.2008, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.2.2008
Где: Воронеж

Репутация: нет
Всего: нет



Добрый день.

Необходимо получить массив структур из 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.

PM MAIL ICQ   Вверх
marcusmae
Дата 26.8.2008, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



amarenkov, прикрепите что ли dll-ку...

хм, ещё стоит попробовать убрать ref, как здесь

Это сообщение отредактировал(а) marcusmae - 26.8.2008, 19:56


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0550 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.