Вызов функции из dll написанной на C - C#

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

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

Привет всем! Возникла такая задача, решить не могу ни как. Есть dll. В ней есть функция (вроде написанная на С):
Листинг программы
  1. int BZ2_bzBuffToBuffDecompress( char* dest, unsigned int* destLen, char* source, unsigned int sourceLen, int small, int verbosity );
В БД храниться уже сжатый документ в блобе. Я вытаскиваю из БД данные и запихиваю в массив байт:
Листинг программы
  1. byte[] zip = new byte[2111111];
  2. long l_res = read_info.GetBytes(2, 0, zip, 0, i_sourceLen);
  3. i_destLen = (int)l_res;
  4. i_sourceLen = (int)l_res;
  5. //создаю 2 массив уже с нужным количеством элементов
  6. byte[] zip_ = new byte[i_sourceLen];
  7. byte[] unzip_ = new byte[i_sourceLen];
  8. l_res = read_info.GetBytes(2, 0, zip_, 0, i_sourceLen);
  9. //вызываю функцию
  10. i_res = BZ2_bzBuffToBuffDecompress(ref unzip_, ref i_destLen, ref zip_, i_sourceLen, i_small, i_verbosity);
возвращает ошибку (-5) BZ_DATA_ERROR_MAGIC if the compressed data doesn't begin with the right magic bytes. сама функция импортируется так:
Листинг программы
  1. [DllImport("C:\\libbz2.dll")]
  2. unsafe public static extern int BZ2_bzBuffToBuffDecompress([MarshalAs(UnmanagedType.SafeArray)] ref byte[] dest, [MarshalAs(UnmanagedType.I4)] ref int destLen, [MarshalAs(UnmanagedType.SafeArray)] ref byte[] source, [MarshalAs(UnmanagedType.I4)] int sourceLen, [MarshalAs(UnmanagedType.I4)] int small, [MarshalAs(UnmanagedType.I4)] int verbosity);
Что передаю не так?

Решение задачи: «Вызов функции из dll написанной на C»

textual
Листинг программы
  1. private string ReadAuthor(Stream binary_file) {
  2.       System.Text.Encoding encoding = System.Text.Encoding.UTF8;
  3.       // Читаем строку из двоичного файла с кодировкой UTF8
  4.       byte[] buffer = new byte[30];
  5.       binary_file.Read(buffer, 0, 30);
  6.       return encoding.GetString(buffer);
  7.     }

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


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

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

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

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

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

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