Re[2]: Marshaling структуры
От: Аноним  
Дата: 09.09.05 15:58
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, <Аноним>, Вы писали:


А>>Есть динамическая библиотека — не Com. Для типов в .VB .Net приложении созданы соответствующие

А>>managed структуры

А>><StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> Public Structure AAAA

А>> 'name
А>> <MarshalAs(UnmanagedType.ByValArray, SizeConst:=33)> Public name() As Char
А>> 'company name
А>> <MarshalAs(UnmanagedType.ByValArray, SizeConst:=33)> Public company() As Char
А>> 'notional open date
А>>End Structure

VD>Вложенные строки лучше нужно описывать как StringBuildet.

Мне казалось что через StringBuilder нельзя указать фиксированный размер буфера.. то есть
чтобы структура была фиксированного размера. При маршалинге — возникает ошибка, потому что
не известен этот присловутый размер массива.

А>>Такой код не работает. Так как не получается привести указатель на С-массив к managed массиву..

А>>в этом случае получается только привести указатель на первый элемент массива..

VD>Приведи описание структуры на С/С++.


На С++ это выглядело бы так (просто реально библиотека на Delphi)
struct aaaa {
char name[33];
char company[33];
};

struct bbbb {
int size;
aaaa** p;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.