Вы должны объявить функцию API как массив строк. Поскольку он объявлен как константа, вы должны добавить атрибут In
, чтобы он не маршалировался после вызова. Если у функции действительно есть только версия Unicode, как вы указали (то есть, она занимает LPCWSTR
, а не LPCTSTR
), тогда вы должны объявить ее с CharSet=Unicode
. Аналогично:
[DllImport("kernel32.dll", CharSet=Unicode)]
static extern bool Foo([In] string[] stuff);
Какую функцию API вы пытаетесь вызвать? Если вы отправите сообщение, я могу дать вам хорошую подпись P / Invoke. Или вы можете проверить pinvoke.net , который имеет довольно хороший предварительно скомпилированный список (сгенерированный сообществом) подписей P / Invoke.