У меня есть собственный проект C ++, структура которого выглядит следующим образом:
struct COMStringArray
{
long lSize;
LPWSTR * array;
};
, который использует com-объект, записанный в C#, поэтому мне нужно маршалировать мои C# типы, чтобы используется в моем проекте C ++. Я пробовал это:
public struct COMStringArray
{
public int lSize;
[MarshalAs(UnmanagedType.LPArray)]
public string[] array;
}
Но у меня возникает следующая ошибка при регистрации в REGASM dll: «Предупреждающие массивы в структурах должны быть SafeArrays или ByValArrays».
Можно ли что-то вывести как LPWSTR *? Нужно ли использовать IntPtr?