, если я объявляю значение Struct в C ++ CLI следующим образом:
[StructLayout(LayoutKind::Sequential, CharSet = CharSet::Ansi, Pack = 2)]
value struct TEST
{
public:
UInt32 bla;
UInt32 foo;
[MarshalAs(UnmanagedType::ByValTStr, SizeConst = 10)]
String^ somestring;
UInt32 bar;
};
и использую эту структуру, когда делает строку [MarshalAs (UnmanagedType :: ByValTStr, SizeConst = 10)] вступить в силу?Имеет ли это эффект, только если я вызываю какую-то нативную функцию, которая объявлена с помощью импорта dll, или если я делаю маршалинг вручную или все время?
Мой вопрос приводит к реализации C ++ Cli Wrapper для функций Native C длянекоторые модули C # в большом проекте.если я сделаю что-то вроде этого:
TEST bla;
pin_ptr<TEST> pinner=&bla;
Это точно, что в этот момент после закрепления моя структура обернута вместе и имеет размер 22 байта (3 * 4 для целого числа и 10 для строки)?Или строка может быть больше?