Libzip zip_dir_add из руководства не объявлено — C / Stack Overflow

Я довольно новичок в программировании на C / C ++, поэтому, пожалуйста, примите это во внимание.

Проблема:

При использовании библиотеки libzip некоторые функции, описанные в руководство Говорят, что не были объявлены в области при компиляции.
Я читаю это руководство (по-французски извините), который был написан в 2011 году. Он использует разные имена функций (zip_dir_add — это zip_add_dir и т. д.)

Я думаю, что это может быть связано с процессом установки. Или, может быть, я забыл включить некоторые файлы ..

Вот что я сделал до сих пор:

1) установка библиотеки libzip с использованием пакетов ubuntu, например:

sudo apt-get install libzip-dev libzip2

2) примерить простой код

#include <iostream>
#include <zip.h>

using namespace std;

int main()
{
struct zip *zip;
int err(0);

zip = zip_open("testzip.zip", ZIP_CREATE, &err);
zip_dir_add(zip, "upld");
zip_close(zip);

return 0;
}

Это возвращает: zip_dir_add не был объявлен в этой области

Есть идеи, что может вызвать это?

Заранее спасибо !

1

Решение

Ваш вопрос состоит из 2 частей: 1, почему zip_dir_add не компилируется, а в документации предлагается использовать zip_dir_add, так как zip_add_dir устарел. Ответ может заключаться в том, что вы имеете в виду другую версию кода и другую версию документации. Для перекрестной проверки перейдите по пути включения libZip и откройте zip.h и проверьте zip_dir_add, который вы не найдете.

Второй вопрос: почему zip_add_dir создает пустой архивный файл? Ответ таков: когда вы добавляете каталог в zip_add_dir, он НЕ добавляет автоматически все файлы (под каталогом) в архив, вам нужно пройтись по каталогу и добавить отдельные файлы, используя zip_add.

2

Другие решения

Вы написали это сами: zip_dir_add на самом деле должно быть zip_add_dir — или я неправильно понял?

РЕДАКТИРОВАТЬ: только что взглянул на библиотеку — действительно, существует zip_dir_add, но это внутреннее. Внешне заявленная обертка zip_add_dir,

EDIT2:
После еще одного взгляда, на этот раз в <zip.h>, Там, zip_add_dir помечен как «устарел» и zip_dir_add кажется, путь.

Я боюсь, что ваш компилятор пытается включить ZLIB zip.h а не твой.

Поскольку вы работаете в Linux (очевидно), я бы порекомендовал перейти на какую-то более распространенную библиотеку, например, упомянутую выше. zlib (который включает в себя minizipи это скорее всего то что нужно). Читать дальше Вот!

2

Функция int zip_add_dir();
Попытайся. Он должен работать.

1
По вопросам рекламы [email protected]