Форум программистов, компьютерный форум CyberForum.ru

Ошибка построения проекта без информации об ошибках - C++

Восстановить пароль Регистрация
 
kaznachei67
24 / 24 / 9
Регистрация: 17.03.2014
Сообщений: 88
03.09.2015, 19:15     Ошибка построения проекта без информации об ошибках #1
Доброго времени суток!
Проблема такая: нужно было программно реализовать распаковку xlsx-файлов в xml. Я скачал библиотеку для распаковки zlib и работал с ней. Честно признаюсь, я далек от этого и порою действовал скорее по наитию, нежели понимая, что делаю. В случае нахождения в моих действиях полного идиотизма, прошу не закидывать меня тапочками
Ориентируясь по примерам, я накидал шаблонную программу, которая компилируется, но построить решение не дает. Среда разработки: MS Visual Studio 2010.
Вот исходник:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include "zconf.h"
#include "zlib.h"
#include <iostream>
 
#pragma comment(lib, "zdll.lib")
 
using std::cout;
using std::endl;
 
#include <stdio.h>
#include <string.h>
#include <assert.h>
 
#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
#  include <fcntl.h>
#  include <io.h>
#  define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
#else
#  define SET_BINARY_MODE(file)
#endif
 
#define CHUNK 16384
 
int inf(FILE *source, FILE *dest)
{
    int ret;
    unsigned have;
    z_stream strm;
    unsigned char in[CHUNK];
    unsigned char out[CHUNK];
        /* allocate inflate state */
    strm.zalloc = Z_NULL;
    strm.zfree = Z_NULL;
    strm.opaque = Z_NULL;
    strm.avail_in = 0;
    strm.next_in = Z_NULL;
    ret = inflateInit(&strm);
    if (ret != Z_OK)
        return ret;
    /* decompress until deflate stream ends or end of file */
    do {
        strm.avail_in = fread(in, 1, CHUNK, source);
        if (ferror(source)) {
            (void)inflateEnd(&strm);
            return Z_ERRNO;
        }
        if (strm.avail_in == 0)
            break;
        strm.next_in = in;
        /* run inflate() on input until output buffer not full */
        do {
            strm.avail_out = CHUNK;
            strm.next_out = out;
            ret = inflate(&strm, Z_NO_FLUSH);
            assert(ret != Z_STREAM_ERROR);  /* state not clobbered */
            switch (ret) {
            case Z_NEED_DICT:
                ret = Z_DATA_ERROR;     /* and fall through */
            case Z_DATA_ERROR:
            case Z_MEM_ERROR:
                (void)inflateEnd(&strm);
                return ret;
            }
            have = CHUNK - strm.avail_out;
            if (fwrite(out, 1, have, dest) != have || ferror(dest)) {
                (void)inflateEnd(&strm);
                return Z_ERRNO;
            }
        } while (strm.avail_out == 0);
    } while (ret != Z_STREAM_END);
    /* clean up and return */
    (void)inflateEnd(&strm);
    return ret == Z_STREAM_END ? Z_OK : Z_DATA_ERROR;
}
 
int main()
{
    cout << "Testing." << endl;
    FILE *source, *dest;
    source = fopen("Book1.xlsx", "r");
    dest = fopen("1.xml", "w");
    cout << inf(source, dest);
    fclose(source);
    fclose(dest);
    system("pause");
    return 0;
}

При компиляции выводит на экран код ошибки Z_DATA_ERROR.
Выходные данные отладки:
Кликните здесь для просмотра всего текста

"xmlParser.exe": Загружено: "C:\Users\Admin\Documents\Visual Studio 2010\Projects\xmlParser\Debug\xmlParser.exe", Символы загружены.
"xmlParser.exe": Загружено: "C:\Windows\SysWOW64\ntdll.dll", Невозможно найти или открыть файл PDB
"xmlParser.exe": Загружено: "C:\Windows\SysWOW64\kernel32.dll", Невозможно найти или открыть файл PDB
"xmlParser.exe": Загружено: "C:\Windows\SysWOW64\KernelBase.dll", Невозможно найти или открыть файл PDB
"xmlParser.exe": Загружено: "C:\Windows\SysWOW64\msvcp100d.dll", Символы загружены.
"xmlParser.exe": Загружено: "C:\Windows\SysWOW64\msvcr100d.dll", Символы загружены.
"xmlParser.exe": Загружено: "C:\Windows\SysWOW64\zlib1.dll", Двоичный код не был построен с отладочной информацией.
"xmlParser.exe": Загружено: "C:\Windows\SysWOW64\msvcrt.dll", Невозможно найти или открыть файл PDB
"xmlParser.exe": Загружено: "C:\Windows\SysWOW64\apphelp.dll", Невозможно найти или открыть файл PDB
"xmlParser.exe": Загружено: "ImageAtBase0x4a3f0000", Загрузка отключена параметром включения/исключения.
"xmlParser.exe": Выгружено: "ImageAtBase0x4a3f0000"
Программа "[73276] xmlParser.exe: Машинный код" завершилась с кодом 0 (0x0).

При построении сообщает, что ошибок: 0, успешно: 0. Раньше при запуске ругался о невозможности выполнения приложения из-за отсутствия библиотеки zlib1.dll, но после добавления ее в Windows\SysWOW64 стал ворчать, что ее двоичный код не был построен с отладочной информацией.
В чем может быть проблема и каковы пути решения?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
03.09.2015, 19:21     Ошибка построения проекта без информации об ошибках #2
Цитата Сообщение от kaznachei67 Посмотреть сообщение
При компиляции выводит на экран код ошибки Z_DATA_ERROR.
Покажи скриншот того как выводит.
kaznachei67
24 / 24 / 9
Регистрация: 17.03.2014
Сообщений: 88
03.09.2015, 20:49  [ТС]     Ошибка построения проекта без информации об ошибках #3
Кстати построилось, но результаты остались те же.
При запуске из среды особо нечего скринить, просто -3 выводит. Полазил по мануалам zlib, там макрос #define Z_DATA_ERROR (-3) - в исходнике есть пример. Инфа из загололовочного файла: inflate() returns Z_DATA_ERROR if the input data was corrupted (input stream not conforming to the zlib format or incorrect check value). То есть входной поток не соответствует формату zlib.
Зато при запуске экзешника выдает такую ошибку:
Буду копаться дальше.
Миниатюры
Ошибка построения проекта без информации об ошибках  
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
03.09.2015, 20:54     Ошибка построения проекта без информации об ошибках #4
Убедись что функции fopen возвращают не ошибку.
kaznachei67
24 / 24 / 9
Регистрация: 17.03.2014
Сообщений: 88
03.09.2015, 20:58  [ТС]     Ошибка построения проекта без информации об ошибках #5
Тьфу, дурная голова, забыл файл для открытия к исполняемому файлу приложить.
Теперь просто -3. Наверное, я что-то не так передаю в функцию.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
03.09.2015, 21:01     Ошибка построения проекта без информации об ошибках #6
Если меняешь код, показывай изменённый.
Ты добавил проверку на ошибки для fopen?
kaznachei67
24 / 24 / 9
Регистрация: 17.03.2014
Сообщений: 88
03.09.2015, 21:11  [ТС]     Ошибка построения проекта без информации об ошибках #7
Да, добавил. Но ошибка пропала сразу после добавления xlsx-файла в Debug
C++
1
2
3
4
5
6
7
8
9
10
FILE *source = NULL, *dest;
source = fopen("Book1.xlsx", "r");
if (source == NULL) cout << "Ошибка открытия файла!" << endl;
else 
{
    dest = fopen("1.xml", "w");
    cout << inf(source, dest);
    fclose(dest);
}
fclose(source);
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
03.09.2015, 21:14     Ошибка построения проекта без информации об ошибках #8
-3 печатает cout в 7-й строке?
kaznachei67
24 / 24 / 9
Регистрация: 17.03.2014
Сообщений: 88
03.09.2015, 21:18  [ТС]     Ошибка построения проекта без информации об ошибках #9
Да. В первом посте есть описание функции
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
03.09.2015, 22:17     Ошибка построения проекта без информации об ошибках #10
Теперь стоит выяснить какая именно функция возвращает эту ошибку, а затем отталкиваться от описания её ошибок.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2015, 22:01     Ошибка построения проекта без информации об ошибках
Еще ссылки по теме:

Ошибка при запуске проекта C++
Ошибка построения проекта - Набор инструментов является неизвестным или отсутствует C++
Ошибка при компиляции проекта C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kaznachei67
24 / 24 / 9
Регистрация: 17.03.2014
Сообщений: 88
04.09.2015, 22:01  [ТС]     Ошибка построения проекта без информации об ошибках #11
Видимо, я изначально неверно понял назначение метода inflate().
За полтора дня копаний я наконец дошел до мысли, что zlib не работает непосредственно с архивами, ее методы позволяют осуществлять сжатие (метод inflate()) и декомпрессию (метод defflate()) файлов. В то время как я ошибочно отправлял в inflate() сам xlsx-файл. Формат xlsx по сути представляет собой zip-архив. По идее, такой архив содержит в себе не только сжатые файлы, но и заголовок, описывающий особенности архива и перечень содержащихся в нем файлов. Получается, мне нужно обработать заголовок, получить из него имена необходимых файлов и скормить эти файлы функции inflate(). Верно я понимаю?
P.S.: если быть точным, не конкретно функции inflate(). Шаблонный пример, который приведен в мануале, а также мной в первом посте, описывает функцию inf(), в которая основывается на inflate(), принимает сжатый файл, и выдает распакованный.
Yandex
Объявления
04.09.2015, 22:01     Ошибка построения проекта без информации об ошибках
Ответ Создать тему
Опции темы

Текущее время: 13:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru