Найти - Пользователи
Полная версия: Нужна помощь по теме C и библиотеки bzip2 на Windows
Начало » Флейм » Нужна помощь по теме C и библиотеки bzip2 на Windows
1
JOHN_16
Приветствую.
Ищется человек который поможет с написанием маленького кода и разрешению вопросов по библиотеке 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
py.user.next
JOHN_16
Проблема в том что я с C очень не очень дружу даже на уровне понимания и синтаксиса
приведи пример вопроса
JOHN_16
1) ПРимер кода для распаковки запаковки строки. СУдя по докам это параграф 3.3 Но что бы написать что то работающее нужно книги читать, а сам я занят. пишу на питоне =)
2) Можно ли исходник каким то образом “подключить” к проекту на MS Visual Studio без лишних плясок с бубном, что бы воспользоваться функциями из вопроса 1? вопрос в том что сама библиотека ориентирована на UNIX, про WIndows указано лишь возможность компиляции в dll

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

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

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

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

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

py.user.next
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 - это просто библиотека с функциями, она динамически может подключаться и отключаться, причём одновременно несколькими приложениями
ничто не мешает добавить эти функции прямо в программу
JOHN_16
doza_and
спасибо за архив на почте.
Нет я не собираюсь что то в Питоне менять. Я хочу некоторый код на нем перевести на C.

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

Как узнать длину архивированного файла?
Почему-то ключ -t в bzip2 не работает, в Фаре длина указана нулевая.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB