Уведомления

Группа в Telegram: @pythonsu

#1 Июль 11, 2013 05:21:10

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Нужна помощь по теме C и библиотеки bzip2 на Windows

Приветствую.
Ищется человек который поможет с написанием маленького кода и разрешению вопросов по библиотеке bzip2 на Windows.
Ситуация такая, есть на питоне написанный софт, который использует модуль bz2 для сжатия строк. Надо часть кода перенести на C (MS Visual Studio) для того что бы другой человек мог интегрировать код в свой проект (естественно в общем смысле).
Проблема в том что я с C очень не очень дружу даже на уровне понимания и синтаксиса

За помощь в достижении этой небольшой задачи от своего имени гарантирую умеренную денюжку в благодарность за помощь.

Связь либо тут, либо на email.
P.S.
Документация в PDF: http://bzip.org/1.0.5/bzip2-manual-1.0.5.pdf
Исходники: http://bzip.org/1.0.6/bzip2-1.0.6.tar.gz



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#2 Июль 11, 2013 13:02:41

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Нужна помощь по теме C и библиотеки bzip2 на Windows

JOHN_16
Проблема в том что я с C очень не очень дружу даже на уровне понимания и синтаксиса
приведи пример вопроса



Офлайн

#3 Июль 14, 2013 02:04:39

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Нужна помощь по теме C и библиотеки bzip2 на Windows

1) ПРимер кода для распаковки запаковки строки. СУдя по докам это параграф 3.3 Но что бы написать что то работающее нужно книги читать, а сам я занят. пишу на питоне =)
2) Можно ли исходник каким то образом “подключить” к проекту на MS Visual Studio без лишних плясок с бубном, что бы воспользоваться функциями из вопроса 1? вопрос в том что сама библиотека ориентирована на UNIX, про WIndows указано лишь возможность компиляции в dll

P.S. Я сразу извиняюсь за возможно нубские вопросы, самому не нравится что приходится таким образом тыкаться в незнакомую среду и пытаться что то там сделать



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Июль 14, 2013 10:19:13

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Нужна помощь по теме C и библиотеки bzip2 на Windows

Код который вы привели нормально компилируется MSVC. Весь вопрос в том что в постановке задачи непонятно как вы хотите это интегрировать в свой проект.

В том что вы привели цели:
all: libbz2.a bzip2 bzip2recover test

Могу кинуть пример как собрать под MSVC10 libbz2.dll. Кладите файлы проекта в директорию с исходником и открываете sln файл. Потом делаете build и получаете dll.

А дальше ctypes в руки и вперед, приспосабливаете под свои нужды.

http://docs.python.org/2/library/bz2.html Насколько я понимаю этот модуль не на чистом питоне. Вы его хотите изменить?



Отредактировано doza_and (Июль 14, 2013 10:23:44)

Офлайн

#5 Июль 14, 2013 10:23:10

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Нужна помощь по теме C и библиотеки bzip2 на Windows

JOHN_16
1) ПРимер кода для распаковки запаковки строки.
bzip.h
/*-- Utility functions --*/

BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) (
char* dest,
unsigned int* destLen,
char* source,
unsigned int sourceLen,
int blockSize100k,
int verbosity,
int workFactor
);

BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) (
char* dest,
unsigned int* destLen,
char* source,
unsigned int sourceLen,
int small,
int verbosity
);
эти имена в скобках означают, что они передаются в макрос BZ_API(), который раскрывается перед компиляцией
то есть слева от имени функции что-то дописывается, либо не дописывается

JOHN_16
вопрос в том что сама библиотека ориентирована на UNIX
нигде не нашёл привязок к UNIX, да и не нужны ей возможности UNIX, она работает с файлами (в бинарном режиме), которые одинаковые, либо просто с данными в памяти
bzip2.c - программа, использующая библиотеку (к самой библиотеке не относится)

JOHN_16
про WIndows указано лишь возможность компиляции в dll
dll - это что-то вроде интерфейса, то есть у тебя как бы только функции, которые ты можешь вызывать из неё, подключив её

dll - это просто библиотека с функциями, она динамически может подключаться и отключаться, причём одновременно несколькими приложениями
ничто не мешает добавить эти функции прямо в программу



Отредактировано py.user.next (Июль 14, 2013 10:50:11)

Офлайн

#6 Июль 14, 2013 23:46:25

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Нужна помощь по теме C и библиотеки bzip2 на Windows

doza_and
спасибо за архив на почте.
Нет я не собираюсь что то в Питоне менять. Я хочу некоторый код на нем перевести на C.

py.user.next
Ну в общем то совместными усилиями и чтением доком мне стало яснее ситуация. Буду пробовать как будет время.
Спасибо за внимание к вопросу.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#7 Дек. 1, 2013 20:58:39

k.alex
Зарегистрирован: 2013-12-01
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь по теме C и библиотеки bzip2 на Windows

Не знаю, куда ещё обратиться с вопросами, но, может он здесь будет наиболее уместен.
Как задаётся выходная длина в BZ2_bzBuffToBuffDecompress ? Это некий chunk, как в gzip? Что является признаком возвращения из этого модуля, кроме конца файла - заполнение выходного буфера?

Как узнать длину архивированного файла?
Почему-то ключ -t в bzip2 не работает, в Фаре длина указана нулевая.

Отредактировано k.alex (Дек. 1, 2013 21:24:35)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version