Re[2]: Marshaling структуры, содержащей массив структур, содержащих структуры
От: Albeoris  
Дата: 25.11.13 11:21
Оценка:
Здравствуйте, SanyaVB, Вы писали:
SVB>У тебя для Middle[] Childs не определен атрибут MarshalAs
При его отсутствии, используется дефолтный. По дефолту массивы маршалятся, как LPArray.

Проблему решил.
Причин ошибки две:
1) В .NET элементы массива могут храниться не единым массивом, даже если это структуры, а не классы (непроверенные данные). В итоге всё-таки выделил новый кусок памяти и скопировал в него данные из массива.
2) Ошибка в подсчётах размеров и неверный тип данных (значение, вместо указателя) в одной из структур.

Нашёл и ликвидировал, создав в С++ DLL, с заглушками для функций, принимающих подобные параметры, после чего смотрел — как смаршаленые значения выглядят в Unmanaged памяти.

Спасибо за внимание.
"Хаос всегда побеждает порядок, поскольку лучше организован." (с) Терри Пратчетт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.