Вызов функции из dll написанной на C - C#
Формулировка задачи:
Привет всем!
Возникла такая задача, решить не могу ни как.
Есть dll. В ней есть функция (вроде написанная на С):
В БД храниться уже сжатый документ в блобе.
Я вытаскиваю из БД данные и запихиваю в массив байт:
возвращает ошибку (-5) BZ_DATA_ERROR_MAGIC if the compressed data doesn't begin with the right magic bytes.
сама функция импортируется так:
Что передаю не так?
int BZ2_bzBuffToBuffDecompress( char* dest, unsigned int* destLen, char* source, unsigned int sourceLen, int small, int verbosity );
byte[] zip = new byte[2111111]; long l_res = read_info.GetBytes(2, 0, zip, 0, i_sourceLen); i_destLen = (int)l_res; i_sourceLen = (int)l_res; //создаю 2 массив уже с нужным количеством элементов byte[] zip_ = new byte[i_sourceLen]; byte[] unzip_ = new byte[i_sourceLen]; l_res = read_info.GetBytes(2, 0, zip_, 0, i_sourceLen); //вызываю функцию i_res = BZ2_bzBuffToBuffDecompress(ref unzip_, ref i_destLen, ref zip_, i_sourceLen, i_small, i_verbosity);
[DllImport("C:\\libbz2.dll")] 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
Листинг программы
private string ReadAuthor(Stream binary_file) { System.Text.Encoding encoding = System.Text.Encoding.UTF8; // Читаем строку из двоичного файла с кодировкой UTF8 byte[] buffer = new byte[30]; binary_file.Read(buffer, 0, 30); return encoding.GetString(buffer); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д