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

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

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

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

libshout.dll

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

string

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

char *

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

int

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

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

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

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


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

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

15   голосов , оценка 3.933 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы