У меня есть небольшое клиентское приложение, предназначенное для работы на windows машинах. Написан на C / C ++ (подробнее в C). Я хочу, чтобы он был небольшим, и поэтому я бы предпочел не использовать внешние библиотеки и придерживаться WinAPI на стороне клиента.
С другой стороны, у меня есть внутренний сервер, реализованный в python3. Здесь я с удовольствием использую любую существующую библиотеку. Теперь я хочу добавить слой сжатия, чтобы увеличить скорость передачи. Проблема, с которой я столкнулся, заключается в том, что кажется, что WinAPI предоставляет только:
// source: https://docs.microsoft.com/en-us/windows/win32/cmpapi/using-the-compression-api
XPRESS
XPRESS with Huffman encoding
MSZIP
LZMS
, которые кажутся уникальной реализацией алгоритма сжатия Microsoft, и я не могу найти способ распаковать данные на стороне сервера в python3.
Что мне не хватает? Я хотел бы услышать некоторые решения :)
Заранее спасибо
ОБНОВЛЕНИЕ
Я решил использовать zlib https://zlib.net/ , как предлагается в комментарии. Ответ, предлагающий использовать ctypes, также был очень интересен, но, к сожалению, мой бэкэнд работает в системе UNIX.
Поскольку я компилирую свою клиентскую часть снова с многопоточной CRT (а не DLL), у меня были некоторые проблемы, так как zlib связывается с многопоточной DLL. Если кто-то сталкивался с такой проблемой, я нашел здесь отличное и очень простое решение: https://yongweiwu.wordpress.com/2017/10/02/a-journey-of-purely-static-linking/ Я скопирую его сюда:
zlib
This part requires a small change to the build script (for version 1.2.11).
I need to open win32\Makefile.msc and change all occurrences of ‘-MD’ to ‘-MT’.
Then these commands will work:
nmake -f win32\Makefile.msc zlib.lib