Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибки компиляции консоли с++ и zlib 1.1.3, visual studio 2010 
V
    Опции темы
ohos
Дата 21.1.2012, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 13.12.2010

Репутация: нет
Всего: нет



Привет, скачал в интернете исходники zlib 1.1.3 (знаю, что последняя версия гораздо больше, но мне нужна именно эта) и в microsoft visual studio 2010 пытаюсь скомпилировать простенькое консольное с++ приложение, все файлы zlib включил в проект (архив со всем проектом http://www.fayloobmennik.net/1448112), но при компиляции лезет ряд ошибок, решение которых мне не удается найти в интернете:

Ошибка    1    error LNK2019: ссылка на неразрешенный внешний символ _deflate в функции "int __cdecl def(struct _iobuf *,struct _iobuf *,int)" (?def@@YAHPAU_iobuf@@0H@Z)
Ошибка    2    error LNK2019: ссылка на неразрешенный внешний символ _deflateEnd в функции "int __cdecl def(struct _iobuf *,struct _iobuf *,int)" (?def@@YAHPAU_iobuf@@0H@Z)
Ошибка    3    error LNK2019: ссылка на неразрешенный внешний символ _deflateInit_ в функции "int __cdecl def(struct _iobuf *,struct _iobuf *,int)" (?def@@YAHPAU_iobuf@@0H@Z)
Ошибка    4    error LNK2019: ссылка на неразрешенный внешний символ _inflate в функции "int __cdecl inf(struct _iobuf *,struct _iobuf *)" (?inf@@YAHPAU_iobuf@@0@Z)
Ошибка    5    error LNK2019: ссылка на неразрешенный внешний символ _inflateEnd в функции "int __cdecl inf(struct _iobuf *,struct _iobuf *)" (?inf@@YAHPAU_iobuf@@0@Z)
Ошибка    6    error LNK2019: ссылка на неразрешенный внешний символ _inflateInit_ в функции "int __cdecl inf(struct _iobuf *,struct _iobuf *)" (?inf@@YAHPAU_iobuf@@0@Z)
Ошибка    7    error LNK1120: 6 неразрешенных внешних элементов

Прошу помочь с компиляцией.

Это сообщение отредактировал(а) ohos - 21.1.2012, 14:59
PM MAIL   Вверх
borisbn
Дата 21.1.2012, 16:21 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



1. Похоже проблема в том, что ты включаешь Си-шный h-ник в c++-ный cpp-шник. Попробуй так
Код
extern "C" {
#include "pure_c_h_file.h"
}

2. Мало кто захочет лезть на какой-то файлопомойкуфайлообменник и скачивать оттуда 6 МБ...
2.1. Выкинь из архива лишнее
2.2. Залей его прямо сюда (прикрепи к теме)
user posted image


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
ohos
Дата 21.1.2012, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 13.12.2010

Репутация: нет
Всего: нет



благодарю за совет, попробовал, не помогло, исходник действительно должен быть С-ишный, но в 2010 студии почему-то нету С языка при создании проекта

я бы прикрепил к сообщению архив с проектом, но он просто не влезает, как определить, что лишнее? 
PM MAIL   Вверх
tzirechnoy
Дата 21.1.2012, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 2
Всего: 16



Да выкинь ты эту вижуал студию, только мозги оно конопатить способно.

Hint: предыдущий оратор привёл пример кода, который надо писать в твоём файле.
PM MAIL   Вверх
ohos
Дата 21.1.2012, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 13.12.2010

Репутация: нет
Всего: нет



я вписал 

Код

extern "C" {
#include "zlib.h"
}


но все равно не помогло, если не студией, чем тогда скопмилировать?
PM MAIL   Вверх
tzirechnoy
Дата 21.1.2012, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 2
Всего: 16



Хм. Я только сейчас понял смысл сообщений.

Явно забыто -lz при вызове компилятора.
PM MAIL   Вверх
ohos
Дата 21.1.2012, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 13.12.2010

Репутация: нет
Всего: нет



Цитата(tzirechnoy @ 21.1.2012,  21:41)
Хм. Я только сейчас понял смысл сообщений.

Явно забыто -lz при вызове компилятора.

т.е. мне нужно запустить саму студию с таким параметром или указать его в самом коде?
PM MAIL   Вверх
volatile
Дата 21.1.2012, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(ohos @  21.1.2012,  23:01 Найти цитируемый пост)
мне нужно запустить саму студию с таким параметром или указать его в самом коде? 

ohos, врядли это поможет.
я собирал как-то проект содержащий zlib на студии, проблем не помню вообще никаких. (правда, с другой версией zlib'а)
Скорей всего вы просто забыли в проект добавить библиотеку.
Напишите где-нибудь в *.cpp следующую фразу
#pragma comment(lib,"zlibwapi.lib")
ну и zlibwapi.lib бросьте туда, где ее сможет найти линкер.

PM MAIL   Вверх
ohos
Дата 21.1.2012, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 13.12.2010

Репутация: нет
Всего: нет



с другого форума
Цитата

Вы добавили только *.h файлы, а *.с нет.
Исправленный проект http://files.mail.ru/N7XA2P


запустил, работает, то что я не шарю совсем в с++ даже не отрицаю)
PM MAIL   Вверх
mes
Дата 22.1.2012, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(borisbn @  21.1.2012,  15:21 Найти цитируемый пост)
 Похоже проблема в том, что ты включаешь Си-шный h-ник в c++-ный cpp-шник. 

 smile я так понимаю такое  решение вызвано словом
Цитата(ohos @  21.1.2012,  13:50 Найти цитируемый пост)
 неразрешенный 
 ?
тогда небольшая поправка :
неразрешенный  это не запрещенный, а нерешенный smile




Это сообщение отредактировал(а) mes - 22.1.2012, 00:05


--------------------
PM MAIL WWW   Вверх
vol4ek
Дата 22.1.2012, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


конь в пальто
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 1.5.2011
Где: Минск

Репутация: 0
Всего: 0



Цитата(tzirechnoy @  21.1.2012,  20:23 Найти цитируемый пост)
Да выкинь ты эту вижуал студию, только мозги оно конопатить способно.


цыц


Цитата(volatile @  21.1.2012,  23:45 Найти цитируемый пост)
Скорей всего вы просто забыли в проект добавить библиотеку.Напишите где-нибудь в *.cpp следующую фразу#pragma comment(lib,"zlibwapi.lib")ну и zlibwapi.lib бросьте туда, где ее сможет найти линкер.





PM MAIL ICQ   Вверх
tzirechnoy
Дата 22.1.2012, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 2
Всего: 16



Цитата
фразу#pragma comment(lib,"zlibwapi.lib")ну


Да-да, я именно об этом. Вместо стандартного с основния C метода предлагается насиловать исходник странными прагмами. Студию в морг, возьмите mingw+msys хотя бы.
PM MAIL   Вверх
borisbn
Дата 22.1.2012, 20:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(tzirechnoy @  21.1.2012,  20:23 Найти цитируемый пост)
Да выкинь ты эту вижуал студию

Цитата(tzirechnoy @  22.1.2012,  07:59 Найти цитируемый пост)
Студию в морг,

Подскажите тогда IDE, которая сама добавляет в проект недостающие Си-шники или lib-ины...

В студии (в отличие от других) есть 2 возможности включить lib-ину в проект:
1) 
Цитата(tzirechnoy @  22.1.2012,  07:59 Найти цитируемый пост)
насиловать исходник странными прагмами

2) в опциях проекта добавить путь к lib-файлам и имя включаемой lib-ины

Короче, нечо на студию пенять, если ручки кривые


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
vol4ek
Дата 22.1.2012, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


конь в пальто
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 1.5.2011
Где: Минск

Репутация: 0
Всего: 0



Цитата(borisbn @  22.1.2012,  20:52 Найти цитируемый пост)
Короче, нечо на студию пенять, если ручки кривые


золотые слова
PM MAIL ICQ   Вверх
volatile
Дата 23.1.2012, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(tzirechnoy @  22.1.2012,  07:59 Найти цитируемый пост)
Вместо стандартного с основния C метода предлагается насиловать исходник странными прагмами. Студию в морг, возьмите mingw+msys хотя бы. 

Так никто не заставляет насиловать исходник  
Можете вставлять библотеки в проект руками, также как это делаете в mingw+msys  smile 
То что в студии есть такая возможность, (помимо того что есть в mingw) это что недостаток?.
Буст например активно юзает эту возможность (и довольно по-делу!), посмотрите например boost\config\auto_link.hpp

Вобще пнуть студию лишний раз это какбе круто. (не важно по-делу, ли нет)
Иногда до смешного доходит.
Плохо - уже потому-что есть такая возможность. smile



PM MAIL   Вверх
ohos
Дата 24.1.2012, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 13.12.2010

Репутация: нет
Всего: нет



скажу честно, этот zlib мой первый опыт с c++ вообще) поэтому я выбирал студию мягких как инструмент, который будет указывать мне на тупые ошибки с достаточным описанием, чтобы решить её, по крайней мере я на это надеялся

но у меня с zlib'ом остался один весьма неразрешенный вопрос - компилироваться-то он компилируется, да вот не работает как надо, вопросы по проблемам в работе и последний рабочий исходник в этой теме выложить или создать отдельную тему?

на всякий случай вот сами проблемы:

1. при запаковке файла через указание параметров только в deflateinit (уровень сжатия) пишется статус "зашибись, все okay", но когда открываю файлик сжатый тем же notepad++, то в конце файла отчетливо вижу мусорные символы (один и тот же символ, русская буква Н, или в Hex это CD), количество которых зависит напрямую от директивы

Код

#define CHUNK 16384


если сделать chunk 1, то количество мусорных символов явно меньше, всего 2 или 3, как следствие такой файл потом не распаковывается

2. пытался распаковать файл, от которого у меня есть: исходный сжатый и распакованный (для сверки), распаковка не удалась... точнее в первый раз как-то распаковалось больше 80%, не было лишь последних двух строк текста содержащих

Код

      end
end


изначально распаковывал со стандартными параметрами в inflateinit, потом использовал inflateinit2 и перебрал все допустимые windowBits (диапазоны от -15 до -8 и от 8 до 15), распаковка так же не удалась, хуже того, больше не удается сделать распаковку хотя бы 80% файла, что-то явно случилось за это время...

p.s. по рекомендации borisbn почистил от мусора (после чистки проверил, запускалось, значит лишнего не удалил) и приложил те 400 кб исходного проекта к сообщению, еще в архиве исходный сжатый файл comp_00020.lua и его распакованная версия decomp_orig_00020.lua

Это сообщение отредактировал(а) ohos - 24.1.2012, 23:34

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  zlib_console_test.rar 396,67 Kb
PM MAIL   Вверх
volatile
Дата 25.1.2012, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



У вас проблемы не со студией, и даже не с zlib 

Вы просто элементарно не правильно работаете с файлами.

Добавлено через 10 минут и 54 секунды
да, чуть не забыл, в исходниках поменяйте размещение файлов с L:\ на С:\

(не хотел загрязнять свой С:\)

Это сообщение отредактировал(а) volatile - 25.1.2012, 13:51

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  111.zip 3,21 Kb
PM MAIL   Вверх
tzirechnoy
Дата 25.1.2012, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 2
Всего: 16



Цитата
Плохо - уже потому-что есть такая возможность. 


Где возможность? С основания C эта возможность была через строку -lz в вызове компилятора. Куда её вписывать этой студии?
Не надо мне разсказывать про 4-х уровневые менюшки, к тому жэ разные на китайской и французской версии. Это -- другое.
PM MAIL   Вверх
volatile
Дата 25.1.2012, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(tzirechnoy @  25.1.2012,  18:36 Найти цитируемый пост)
 С основания C эта возможность 

вы это о чем? о каком основании  С: smile 

tzirechnoy, в студии можно вообще работать без IDE, с голимой комм.строкой
Как я понял вы это считаете пределом совершенства?  smile 

дальнейший спор неуместен. Не нравиться студия, ради бога.
мне это как-то по-барабану.

PM MAIL   Вверх
ohos
Дата 26.1.2012, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 13.12.2010

Репутация: нет
Всего: нет



volatile, благодарю вас, я посмотрел отличия, если я правильно понял, то они лишь в отсутствии знака + в функциях fopen, запаковка исходного файла и распаковка работает, но после я пытался распаковать один странный файл упакованный вроде бы zlib 1.1.3 с заголовком кратным 31, во время распаковки возникает ошибка и я решил более точно определить, где именно в inflate функции из файла inflate.c это происходит путем вывода сообщений в консоль, но студия ругается на использование там PRINTF или fputs, как правильно их там использовать?

например ошибка:

ссылка на неразрешенный внешний символ _PRINTF в функции _inflate

если вставить в inflate.c функцию

Код

...
while (1) switch (z->state->mode)
  {
    case METHOD:
      NEEDBYTE
      PRINTF("inf method\n");
      if (((z->state->sub.method = NEXTBYTE) & 0xf) != Z_DEFLATED)
      {
...


Это сообщение отредактировал(а) ohos - 26.1.2012, 01:13
PM MAIL   Вверх
volatile
Дата 26.1.2012, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(ohos @  26.1.2012,  01:00 Найти цитируемый пост)
если я правильно понял, то они лишь в отсутствии знака + в функциях fopen

+ не причем. у вас файл после записи в него не закрывался. И позиция указывала на конец.
А вы пытались из него читать. в итоге ...

Цитата(ohos @  26.1.2012,  01:00 Найти цитируемый пост)
  PRINTF("inf method\n");

В С/С++ имена функций регистрозависимы.
функции PRINTF не существует...


ohos, возможно вам рано браться за такие проекты?
Может стоит сначала почитать учебники.
Вы не знаете самых основ.

PM MAIL   Вверх
ohos
Дата 26.1.2012, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 13.12.2010

Репутация: нет
Всего: нет



volatile, согласен, рано по уровню знаний в c++, но к сожалению не по необходимости, к тому же учиться никогда не поздно, а учиться на нужном и дельном примере еще и интересно smile

я попробую вечером набрать в правильном регистре функцию, просто слишком привык в некоторых языках к независимости
PM MAIL   Вверх
ohos
Дата 27.1.2012, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 13.12.2010

Репутация: нет
Всего: нет



volatile, прошу прощения, но если у вас еще есть желание помочь в решении вопросов, то они уже появились

printf сработало, нужно было действительно писать маленькими буквами и я добавил вывод сообщений в функции inflate и затем inflate_blocks, чтобы понять, где "разница" и как её избежать при распаковке "странного" файла, в отличие от того, который был пожат этим же консольным приложением, в результате я нашел то место "различия", оно оказалось в функции inflate_blocks, точнее говоря в куске её кода

Код

...
case CODES:
      UPDATE
          printf("inflate_blocks codes\n");
      if ((r = inflate_codes(s, z, r)) != Z_STREAM_END)
        return inflate_flush(s, z, r);
      r = Z_OK;
      inflate_codes_free(s->sub.decode.codes, z);
      LOAD
      Tracev((stderr, "inflate:       codes end, %lu total out\n",
              z->total_out + (q >= s->read ? q - s->read :
              (s->end - s->read) + (q - s->window))));
      if (!s->last)
      {
        s->mode = TYPE;
        break;
      }
      s->mode = DRY;
...


тут нормальный файл уходит в мод DRY, а исследуемый мной "странный" в TYPE (на новый круг распаковки, чего быть вроде не должно, потому-что все данные на распаковку умещаются в один размер CHUNK), но в данном куске я напрочь не понимаю, что означает проверка (!s->last) и как она происходит, найти в интернете оказалось довольно сложно, так как я пытался искать по ->, а все поисковые системы воспринимают знак минуса как логический оператор "не", а не текст, символ > правда тоже похоже для них не является просто текстом либо вообще заблокирован для поиска, но теоретически я догадываюсь, что s является переменной из объявления

Код

...
int inflate_blocks(s, z, r)
...


а last проверка, стоит ли указатель в конце файла или нет, но это лишь "теория". так как я не знаю и не могу найти ответ из-за слишком продвинутых поисковых систем

архив со своей версией показывающей шаги по распаковке, оба файла ("странный" и запакованный этим же консольным приложением), а так же скрин с выявленными различиями - прикладываю и прошу помочь разобраться с распаковкой "странного" файла или хотя бы дать подсказку о той затычной проверке)

хочу отметить еще, что оба запакованных файла имеют заголовок (2 байта) кратные 31, если бы "странный" был сломан совсем, то он бы тогда имел наверняка битый заголовок и то приложение, которое им пользуется не смогло бы читать файл, а оно использует как раз zlib.dll версии 1.1.3 (MD5 этой dll совпадает с теми, что я качал из интернета, значит zlib используется не измененный), а сейчас он всего лишь больше того, который у нормального (странный - 789C, нормальный - 7801)

еще хочу заметить, что у zlib при распаковке есть возможность указывать настройки в лице windowBits, но я уже пробовал его изменять, перебирал все диапазоны (от -15 до -8 и от 8 до 15), не помогло...

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  zlib_console_test2.rar 518,23 Kb
PM MAIL   Вверх
volatile
Дата 27.1.2012, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



ohos, как я понял вы хотите распаковать неизвестно откуда взятый файл, и он у вас не распаковывается.
А с чего вы взяли что он например не зашифрован, или что к нему не прибавили какие-то служебные байты в начале
(например название фала, или размер)?

Программа свои функции выполняет нормльно.
А то что вы пытаетесь сделать - уже попытка угадать в лотерею, методом тыка.
Нужно смотреть исходники той программы, которая и создала этот файл.

PM MAIL   Вверх
ohos
Дата 28.1.2012, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 13.12.2010

Репутация: нет
Всего: нет



volatile, откуда взят файл, известно, брал правда не я сам, гарантии отсутствия шифрования конечно же нет, но я уверен, что шифровать его еще поверх было бы глупо, потому-что он и так был в "самопальном" архиве, любой желающий его бы и так не смог открыть, к тому же шифрование сказалось бы на производительности, а это при сжатии и перечитывании файла при любом обращении к нему по моему недопустимая роскошь

к тому же одно время удалось пообщаться с человеком, который его из того архива самопального вытащил, он то и дал прогу для распаковки архива, говорил что не очень сложно было разобраться, но ни исходников того распаковщика ни объяснений не дал и контакт с ним потом потерялся, возможно он просто сильно забил на все это

я решил не идти сразу по пути реверс инжиниринга, так как в нем я еще больше не шарю, хотя когда-то пробовал на креклабе, решил проверить файл на возможность распаковки стандартным zlib, т.к. приложение использующее тот самопальный архив использует стандартную zlib.dll версии 1.1.3

то, что эта версия работает корректно сама по себе, я уже убедился и за это крайне благодарен вам, но необходимость разобраться что именно с тем странным файлом все же есть, при его просмотре в WinHex я заметил одну весьма странную осоденность, у него в конце идет много нулей и кусочек текста, не исключаю, что он тут просто лишний, но пока не пробывал перебирать распаковку с отрезанием последних байт файлов, хотя попробую и это на всякий случай
PM MAIL   Вверх
volatile
Дата 28.1.2012, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



ohos, хорошо. Скинтье отдельно этот файл. Будет время я посмотрю.
Если есть распокованый он-же, то тоже скинтье

Естественно обещать что угадаю алгортм не буду. 

PM MAIL   Вверх
ohos
Дата 29.1.2012, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 13.12.2010

Репутация: нет
Всего: нет



я проверил все старые файлы исходные, что были и нашел, файл который я пытался распаковать был неправильным, т.к. по ошибке был извлечен тем человеком как не сжатый, он потом присылал мне еще один, который по сути тоже сжат, но извлечен правильно, архив с тремя луа файлами во вложении

orig_source_00020.lua - оригинальный файл извлеченных из странного архива
orig_comp_00020.lua - сжатый вариант файла из странного архива
console_comp_00020.lua - сжатый вариант оригинального файла этой консолью, проблемы в работе которой обсуждались


в данный момент странна лишь одна вещь, файл извлекается, но консольное приложение пишет ошибку, я попробую еще раз перебрать все windowBits, так как в прошлый раз делал это с криво извлеченным из самопального архива)

Это сообщение отредактировал(а) ohos - 29.1.2012, 15:18

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  zlib_console_test2.rar 0,68 Kb
PM MAIL   Вверх
ohos
Дата 30.1.2012, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 13.12.2010

Репутация: нет
Всего: нет



я перебрал все варианты сжатия, затем стал искать файлы имеющие такой же заголовок 2 байта и сравнивать их на соответствие байт "странному" файлу, в итоге было найдено порядка 6-8 возможных опций при которых из 164 байтов "странного" файла совпадают аж 159! smile

вот на всякий случай архив со всеми вариантами распакованными + точно тот, где совпадает 159 байт из 164

comp_00020_lvl5_winbits15_memlv2_strategy0.lua

параметры сжатия соответственно level 15, method 8 (константа) ,windowBits 15, memLevel 2, strategy 0

уважаемый volatile, полагаю теперь загадка "странного" файла не настолько тяжелая и вы мне поможете её разгадать? я пока что попробую поискать другие файлы из странного архива, для сравнения и проверки

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  zlib_all_types.rar 884,89 Kb
PM MAIL   Вверх
volatile
Дата 30.1.2012, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(ohos @  29.1.2012,  14:27 Найти цитируемый пост)
файл извлекается, но консольное приложение пишет ошибку,

Скорей всего это просто поврежденный файл, тем более что 
Цитата(ohos @  29.1.2012,  14:27 Найти цитируемый пост)
файл который я пытался распаковать был неправильным, т.к. по ошибке был извлечен тем человеком как не сжатый

В общем пройдя токое количество рук, файлу трудно остаться не поврежденным  smile 

ohos, распаковщик должен расжать файл, независимо от способа запаковки. Если пишет ошибку, значит файл поврежден.
либо записан другим упаковщиком/другой версией.

PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1341 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.