Этот файл lzo1.dll является общедоступной версией библиотеки декомпрессии LZO. Поскольку это работает с вашим файлом, попробуйте использовать его, особенно если библиотеки .NET LZO не работают для вас.
Кажется, он исчез из обычного места (GnuWin32), но я нашел его здесь:
http://www.pytables.org/download/lzo-win/
Как только вы это сделаете, вы можете использовать P / Invoke для вызова неуправляемых методов в библиотеке. Приведенный выше архив включает двоичные файлы, заголовочные файлы и справочные страницы - все, что вам нужно для создания собственного перевода C # P / Invoke. Простая декомпрессия не выглядит слишком сложной, всего два вызова:
[DllImport("lzo1.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern int lzo_init ( );
[DllImport("lzo1.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern int lzo1x_decompress (
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex=1)] byte[] src,
int src_len,
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex=3)] byte[] dst,
int dst_len,
IntPtr wrkmem);
Похоже, существует множество различных методов _decompress, и вам, возможно, просто нужно попробовать их все, чтобы увидеть, какой из них работает с вашим конкретным файлом. Все они имеют одинаковую подпись, просто разные имена. Просмотрите файлы заголовков, чтобы увидеть, какие из них есть.