Как вывести C# тип на LPWSTR * - PullRequest
1 голос
/ 08 апреля 2020

У меня есть собственный проект 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?

...