Как при использовании DllImport передать строку - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Пытаюсь использовать

libshout.dll

. При указании параметров методу возникает ошибка. Неправильно работаю со строками. Как передать

string

в метод который принимает

char *

[DllImport("libshout-3.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
private static extern int shout_set_host(long instance, string host);
Сам метод на Си:
int shout_set_host(shout_t *self, const char *host)
[DllImport("libshout-3.dll" , CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]       
internal static extern IntPtr shout_get_error(long instance);
 
//вот так преобразовываем в строку
return Marshal.PtrToStringAnsi(shout_get_error(this.instance))
Что интересно в методах которые принимают

int

всё проходит нормально. Значит явно с преобразованием строк надо что-то делать . Не пойму как.

Решение задачи: «Как при использовании DllImport передать строку»

textual
Листинг программы
[DllImport("libshout-3.dll", CharSet = CharSet.Ansi, ExactSpelling=true, CallingConvention = CallingConvention.Cdecl)]
private static extern int shout_set_host(IntPtr instance, string host);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы